Jquery Validate取决于更改最小规则值

时间:2014-07-01 03:50:24

标签: javascript jquery html

的Javascript

dollars: {
                required: true,
                number: true,
                min:{ 
                    depends: function(element) {
                        if($('#method option:selected').text() == "Cash Deposit"){
                            return 20;
                        } else if($('#method option:selected').text() == "Wire Transfer"){
                            return 200;
                        }
                        else{
                            return 20;
                        }
                    }
                }
                ,
                max: maximumDA,
                unique: true
            },

HTML

<select class="required" id="method" name="method" required>
        <option value="deposit">Cash Deposit</option>
        <option value="wire">Wire Transfer</option>
        <option value="cbymail">Cash by Mail</option>
</select>

当我选择其他选项时,我正在尝试进行最小金额变化。依赖不起作用。我有一种感觉,我将不得不创建自己的规则来实现这一点,我只是想知道它们是否是一种依赖于正确运行的方式。

修改

我的解决方案:

为了动态更改最小金额,我认为您不能使用依赖函数来更改规则的值,只能打开。

我只是删除并添加规则,使其按我需要的方式工作。

$('#method').change(function(){
    if($('#method option:selected').text() == "Cash Deposit"){
         $('#dollars').rules("remove","min");
         $('#dollars').rules("add",{min:20});
    }
    else if($('#method option:selected').text() == "Wire Transfer"){
         $('#dollars').rules("remove","min");
         $('#dollars').rules("add",{min:200});
    }
    else{
         $('#dollars').rules("remove","min");
         $('#dollars').rules("add",{min:20});
    }
});

2 个答案:

答案 0 :(得分:0)

首先你应该做什么(事件)改变将在select标签中发生,返回该值。然后只有函数才能工作。

如果在dollar.min中有函数,那么代码不知道什么时候会被调用。

 var minAmount;
    $('#method').change(function(){
        if($('#method option:selected').text() == "Cash Deposit")         {  minAmount=20;   }
        else if($('#method option:selected').text() == "Wire Transfer")   {  minAmount=200;  }
        else                                                              {  minAmount=20;   }
        alert(minAmount);
    });

现在assign minAmount值为dollars :{ min : minAmount }

      dollars: {
            required: true,
            number: true,
            min:{ depends: minAmount },
            max: maximumDA,
            unique: true
        },

答案 1 :(得分:0)

这对我有用:

function returnValue() {
    var theValue;
    if ($('#method option:selected').val() == "deposit") {
        theValue = 20;
    } else if ($('#method option:selected').val() == "wire") {
        theValue = 200;
    } else {
        theValue = 20;
    }
    var variable = {
        dollars: {
            required: true,
            number: true,
            min: {
                depends: theValue
            },
            max: maximumDA,
            unique: true
        }
    };
    return variable;
}
$('#method').change(function () {
    returnValue();
});
returnValue();

请注意,我对您的dollars媒体资源进行了一些更改,以便进行测试。


<强> ALTERNATIVE:

您可以使用:

function returnValue() {
    if ($('#method option:selected').val() == "deposit") {
        return 20;
    } else if ($('#method option:selected').val() == "wire") {
        return 200;
    } else {
        return 20;
    }
}

...然后通过以下方式调用该函数:

min: {
        depends: returnValue()
     },