Я хотел бы, чтобы пользовательская проверка выполнялась перед следующей вкладкой или предотвращала переход к следующей вкладке, если пользовательская проверка не соответствует требованиям, подобным другим полям
Модель
[EnsureMinimumElementsAttributeDropOff(ErrorMessage = "You must supply at least one Drop Off Date")]
public virtual List<DropOffDate> DropOffDates { get; set; }
Пользовательская проверка
public class EnsureMinimumElementsAttributeDropOff : ValidationAttribute
{
public override bool IsValid(object value)
{
var list = value as List<DropOffDate>;
if (list != null)
{
foreach (var item in list)
{
// check if at least 1 row is filled for Drop-off Date by user
if (!string.IsNullOrEmpty(item.Date) && !string.IsNullOrEmpty(item.StartTime)
&& !string.IsNullOrEmpty(item.EndTime))
return true;
}
}
return false;
}
}
Моя пользовательская проверка работает, но она проверяется только после того, как страница будет отправлена /отправлена.
Заранее спасибо
Вам нужно добавить к нему проверку на стороне клиента.
Это приведет к проверке в браузере, прежде чем он отправится на сервер, предотвращая сообщения, если форма недействительна.
Гиды:
http://www.itorian.com/2013/08/enabling-client-side-validation-on.html?m=1
Чтобы активировать проверку при изменении вкладок, действуйте()
if(!$("#form_id").valid())
// keep on same tab
Это подтвердит форму и вернет ее состояние на основе того, что вы можете разрешить/запретить им изменять вкладки и решать проблемы.