Пользовательская проверка не запускается, когда ожидается - PullRequest
2 голосов
/ 17 ноября 2011

Я использую проверку в представлении MVC.Я использую некоторые аннотации данных для других свойств моей модели (например, Required и Length), но мне нужно было написать собственный валидатор, подобный следующему, чтобы сравнить даты.

$(document).ready(function(){

  $.validator.addMethod("enddate", function(value, element) {
         var startdatevalue = $('.startdate').val();
         return Date.parse(startdatevalue) < Date.parse(value);
  }, "End Date should be greater than Start Date.");

});

Я добавляю «конечную дату»msgstr "класс к текстовому полю, чтобы он проверял.Однако проверка не запускается, когда ожидается.В моем сценарии он должен срабатывать при нажатии кнопки отправки, как и остальные другие валидаторы, однако пользовательский валидатор срабатывает, когда я теряю фокус из текстового поля.Есть ли способ заставить пользовательский валидатор срабатывать, когда происходят другие проверки?Кроме того, об ошибке не сообщается в сводке проверки, но средство проверки запускается и меняет цвет текстового поля на красный.

Ответы [ 4 ]

0 голосов
/ 17 ноября 2011

просмотрите следующую статью:

http://nickstips.wordpress.com/2011/11/05/asp-net-mvc-lessthan-and-greaterthan-validation-attributes/?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+NickOlsensProgrammingTips+%28Nick+Olsen%27s+Programming+Tips%29

Что-то там используется, например:

function appendModelPrefix(value, prefix) {
    if (value.indexOf('*.') === 0) {
        value = value.replace('*.', prefix);
    }
    return value;
}

Это может быть проблемой, если ваши модели относятся к другому классу.Например: MyViewModel.Person, если это так, имя элементов будет выглядеть следующим образом: Person.Name.

0 голосов
/ 17 ноября 2011
$(document).ready(function () {
        $.validator.addMethod("endDate", function (value, element) {
            var startDate = $('.startDate').val();
            return Date.parse(startDate) <= Date.parse(value);
        }, "* End date must be Equal/After start date");
    });

его рабочий код, я использую его

0 голосов
/ 17 ноября 2011

Вы можете вызвать $ (form) .valid () или $ (form) .validate () при нажатии кнопки.

$("submitbutton").click(function(){

if(!$(form).valid())
{
  return false;
}

});
0 голосов
/ 17 ноября 2011
$(document).ready(function(){
  $.validator.addMethod("enddate", function(value, element) {
   var startdatevalue = $('.startdate').val();
   return Date.parse(startdatevalue) < Date.parse(value);
  }, "End Date should be greater than Start Date.");
$('#yourformid').validate();
});

Я думаю, что это работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...