2017-05-08 24 views
-2

我有一个特定的问题。我使用jQuery验证,并想在一个字段中的代码看起来像这样jQuery验证火第二种方法,只有当第一个是真

var validate = { 
    opt: { 
    onkeyup: function(element, event) { 
     if (event.which === 9 && this.elementValue(element) === "") { 
     return; 
     } else { 
     validator.element(element); 
     } 
    }, 

    rules: { 
     'user[password]': { 
     method1: {}, 
     method2: {}, 
     required: true, 
     }, 
    }, 
    }, 
    messages: {} 
}; 

jQuery.validator.addMethod('method1', function(a, b, c) { 
    return false; 
}); 
jQuery.validator.addMethod('method2', function(a, b, c) { 
    console.log('test'); 
    return true; 
}); 

问题设置多个自定义规则,是方法2大火只有方法1返回true。代码就是一个例子。有没有任何选项可以设置这样的行为。我错过了什么吗?我在其他页面上得到了类似的代码,并且它可以正常工作

+0

'messages'应该是'rules'和'onkeyup'的兄弟,但是你的''opt'对象之外。 – Sparky

回答

0

问题是方法2仅在方法1返回true时触发。代码就是一个例子。

规则每场进行评价,一次一个(它们被声明的顺序,具有required除外)

如果该字段为required,则会显示required消息,直到在该字段中输入内容。一旦该字段开始填写,其余方法将按顺序触发...将显示method1消息,直到满足该规则(返回true)。因此method2只会在满足requiredmethod1true)后才会触发。

由于您的method1永远是false,它永远不会被满足,method2永远不会被评估。

是否有任何设置这样的行为的选项。

不,它是这样设计的,没有选项可以关闭它。否则,你会在一个字段上同时显示几条消息。

我错过了什么吗?

如果您需要两个自定义方法同时触发,那么这两个规则应该合并为一个方法。

I 得到 [在其他页面上有类似的代码,它能正常工作。

取决于“类似”和“正确”的定义。如果你认为两个规则同时被评估,那是不可能的。您的OP上面的代码 按预期工作并设计。

+0

谢谢,我将来会记住这一点。我已经将我的验证规则放在一个方法中,并且运行顺利。 :) – tadkovitz

+0

@tadkovitz,因为我正确地回答了你原来的问题,请接受我的回答。谢谢。 – Sparky

相关问题