jQuery 验证相关规则

jQuery Validation dependent rules

我有一个简单的表单,应该使用 "if...else if" 逻辑对其进行验证。我的实际形式比这个复杂一点,但实现类似于这个例子。

这是我目前所拥有的

HTML

<form>
    <input name="input" type="text" />
    <br />
    <button type="submit">Submit</button>
</form>

JS

$.validator.addMethod("equals1", function(value, element, param)
{
    return value == 1;
}, "The value entered should be 1");

$.validator.addMethod("equals2", function(value, element, param)
{
    return value == 2;
}, "The value entered should be 2");

$("form").validate({
    rules: {
        input: {
            required: true,
            equals1: true,
            equals2: true
        }
    }
});

我希望仅当 equals1 规则为 false 时才执行 equals2 规则,如下所示

if (value == 1)
    return true;
else if (value == 2)
    return true;
else
    return false;

我无法将这两个规则合二为一,因为我想针对不同的场景显示不同的错误消息。

我知道这个问题开始时需要依赖规则,但它背后的目的是让 "if...else if" 类型验证和不同的条件吐出不同的错误消息。这是我实现它的方法。

$.validator.addMethod("equalsCheck", function(value, element, param)
{
    if (value == 1)
        return true;
    else if (value == 2)
        return true;
    return false;
}, 
function(){
    if ($("input").val()=="12")
    return "Value should not be 12 but 1 or 2";
    else if($("input").val()!="1" && $("input").val()!="2")
    return "Value must be equal to either 1 or 2";
    return "";
});

在 addMethod 中,不是只为第三个参数传递字符串(错误消息),而是传递一个函数对象,其中 returns 您想要的错误消息。

https://jsfiddle.net/vidhyardhi/kjv6kotg/