自定义验证未在预期时触发

时间:2011-11-17 04:27:36

标签: jquery asp.net-mvc asp.net-mvc-3 jquery-validate

我在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.");

});

我正在将“enddate”类添加到文本框中,以便进行验证。但是,验证不会在预期时触发。在我的场景中,它应该像其他验证器一样单击提交按钮时触发,但是,当我从文本框中失去焦点时,自定义验证器会触发。有其他方法可以在其他验证发生时使自定义验证器触发。此外,验证摘要中未报告错误,但验证程序触发并将文本框的颜色更改为红色。

4 个答案:

答案 0 :(得分:0)

$(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();
});

我认为它有效。

答案 1 :(得分:0)

$(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");
    });

其工作代码,我正在使用它

答案 2 :(得分:0)

单击按钮时,可以调用$(form).valid()或$(form).validate()。

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

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

});

答案 3 :(得分:0)

回顾以下文章:

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

相关问题