jQuery验证notequalto添加了方法



从另一个较旧的堆栈帖子中看起来完全可以根据需要进行,我在验证器中添加了一种方法,该方法(应该(将输入比较到违禁值列表,然后返回一个错误消息如果输入在列表中。

jQuery.validator.addMethod('notEqualTo',function(value, element, param) {
    var notEqual = true;
    value = $.trim(value);
      for (i = 0; i < param.length; i++) {
        if (value == $.trim($(param[i]).val())) { notEqual = false; }
      }
      return this.optional(element) || notEqual;
        },"The value you entered is not permitted in this field.");

问题似乎是在比较中。无论我指定什么是被禁止的值,当看起来应该在匹配中返回false时,这总是返回的。

userloginname: {
    required: true,
    notEqualTo: ['password','anotherword','#email']

使用上述内容,如果用户输入"密码"," anotheword"或用户名与电子邮件字段匹配,则应设置notequal = false并丢弃错误。

您似乎正在处理代表代表另一个元素的 id的单词和字符串作为同一事物的字符串。

notEqualTo: ['password','anotherword','#email']

前两个参数的根问题在这里:

if (value == $.trim($(param[i]).val()))
  1. .val()仅用于检索表单元素的值。您错误地将其连接到param,这是一个代表单词的变量。

  2. param[i]包装在jQuery函数中$()中,将此变量变成一个jQuery对象,这是FIRS两个参数的不需要的。

只需比较两个变量...

if (value === param[i])

演示:jsfiddle.net/kwxtvur8/

说,如果您的第三个参数是另一个字段的值,那么您需要与字符串的其他参数分开处理。我建议一种方法来处理将值与单词进行比较(如我的演示中(的方法,以及将该字段与另一个字段值进行比较的另一种完全独立的方法。

$('#myform').validate({
    rules: {
        userloginname: {
            required: true,
            notEqualTo: ['password', 'anotherword'],
            notEqual: '#email'
        }
    } 
    ....

notEqual方法:

jQuery.validator.addMethod('notEqual', function(value, element, param) {
    value = $.trim(value);
    return this.optional(element) || (value !== $.trim($(param).val()));
}, "The value you entered is not permitted in this field.");

演示2:jsfiddle.net/hp1dgcug/

相关内容

  • 没有找到相关文章

最新更新