远程验证OnBlur和空字符串

时间:2012-10-17 00:12:47

标签: asp.net-mvc asp.net-mvc-4 remote-validation

我有一个启用了远程验证的视图模型。在我看来,我也禁用了OnKeyUp

    $(function() {
        $.validator.setDefaults({ onkeyup: false });
    })

但是,如果我专注于文本框,并将焦点移动到另一个控件,则根本不会触发远程验证。

当我将其配置为onBlur和空字符串时,有没有办法可以让远程验证触发?

1 个答案:

答案 0 :(得分:0)

为此,您需要修改jquery-validate.js文件。

与远程验证相关的代码:

remote: function(value, element, param) {
  if ( this.optional(element) )
    return "dependency-mismatch";

  var previous = this.previousValue(element);
  ....
  // ajax call
  ....
}

第一个if块测试元素是否是可选的,除非已将[Required]属性应用于属性,或者属性是值类型(我假设您的属性为typeof string)因此函数返回并且永远不会到达进行ajax调用的代码。请注意,即使您添加了[Required]属性,也不会调用此代码块,因为required:首先得到验证,而您只需要"需要提交XXX代码" 消息。

如果您注释掉第一个if块,并使用空字符串进行聚焦,则会触发远程验证。