我目前正在使用bassistance jquery 验证或 jqueryvalidation 插件(他们将其重命名),我让它验证如下形式:
if($.fn.validate) {
        $("#frmNewOrder").validate({
            rules: {
                txtAmount: {
                    required: true,
                    digits: true
                },
                ddlAccount: {
                    required: true
                },
                ddlBank: {
                    required: true
                }
            }
        });
    }
现在取决于我需要或不需要额外字段的下拉列表,并取决于该下拉列表的另一个文本输入。所以就像:
 if($('#txtAmount').val() >= 10000){
     //add ddlReason required
 }
 if($('#ddlReason').val() == 'o'){
     //add txtReason required
 }
我已经尝试像其他字段一样添加 css 类“必需”,但如果它们不在规则之内,我会接受它,那么它不起作用?我试过添加这样的规则:
 $( "#ddlReason" ).rules( "add", {
        required: true});
这也不起作用。有什么建议么?
编辑:这是我正在使用的 jquery 验证的链接。如果我在外面使用规则,则会出现此错误:
Uncaught TypeError: Cannot read property 'settings' of undefined 
在第 124 行:
var settings = $.data(element.form, 'validator').settings;
并使用我在其他地方看到的建议,我已经这样做了,这就是导致错误的原因:
var defaultrules = {
    txtAmount: {
        required: true,
        digits: true
    }
}
if($.fn.validate) {
    $("#frmNewOrder").validate();
    addRules(defaultrules);
}
编辑 2:这是 html 标记,希望对您有所帮助。
<form id="frmNewOrder" name="frmNewOrder" action="" method="post">
<label>Amount</label>
<input type="text" name="txtAmount" id="txtAmount" class="required" />
<button id="calculate" type="button">Calculate</button>
<div id="dvreason" style="display:none;">
    <select id="ddlReason" name="ddlReason">
         <option></option>
         <option value="i">Option 1</option>
         <option value="o">Other</option>
    </select>
    <div id="dvother" style="display:none">
       <label>Other reason</label>
       <input type="text" name="txtOther" id="txtOther" />
    </div>
</div>
<input type="submit" name="send" id="send" value="Send" />
</form>