jQuery验证依赖规则

时间:2018-01-10 17:54:50

标签: jquery jquery-validate

我有一个简单的表单,应使用“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;

我无法将这两个规则合并为一个,因为我想为不同的场景提供不同的错误消息。

1 个答案:

答案 0 :(得分:0)

我知道这个问题开始时需要依赖规则,但其背后的目的是让“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中,不​​是仅为第3个参数传递字符串(错误消息),而是传递一个返回所需错误消息的函数对象。

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