jQuery验证 - 这取决于值相同的规则

问题描述 投票:0回答:1

我遇到的语法惹上麻烦的输入字段校验2个范围值。

我的形式有2个选择字段和一个文本输入框。

If select1 = 1 and select2 = A,我想对文本字段的范围值是1 to 120

If select1 = 1 and select2 = B,我想对文本字段的范围值是121 to 500

我的验证代码:

  PrepurchasePlotNumber: {
    digits: true,
    required: {
        depends: function() {
            return ($("input[name=PlotType]:checked").val() == "Prepurchase");
        }
    },
    range: {
        param: [1, 120],
        depends: function() {
            return ($("#PrepurchasePlotArea").val() == "1") && ($("#PrepurchasePlotRow").val() == "A");
        }
    },
    range: {
        param: [121, 500],
        depends: function() {
            return ($("#PrepurchasePlotArea").val() == "1") && ($("#PrepurchasePlotRow").val() == "B");
        }
    }
},

数字和要求做工精细。我不能让我的代码的权利,以测试这两个范围的场景。只有一个会在任何一个时间工作。请能有人指出我在正确的方向。

jquery jquery-validate
1个回答
0
投票

只有一个会在任何一个时间工作。

因为你不能有相同的字段声明了两次相同的规则。第二个可能会过乘坐第一。

此外,你使用depends书面的方式,你说你只想要range规则时满足条件。

你只需要使用一个函数来return,取决于条件的参数。

PrepurchasePlotNumber: {
    digits: true,
    range: function() {
        if (($("#PrepurchasePlotArea").val() == "1") && ($("#PrepurchasePlotRow").val() == "A")) {
            return [1, 120]
        } else {
            return [121, 500]
        }   
    },
    ....

根据需要修改逻辑。

© www.soinside.com 2019 - 2024. All rights reserved.