我目前正在使用 bassistance jquery validation或 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 类“required”,但如果它们不在规则之内,那么它不起作用?我尝试添加这样的规则:
$( "#ddlReason" ).rules( "add", {
required: true});
这也不起作用。有什么建议吗?
编辑:这是 link 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>
最佳答案
我也收到了相同的错误消息,并意识到我应该先调用表单上的 validate()
,然后再对各个输入调用 rules()
字段。此行为是documented .
$('#form').validate({
rules: {
email: {
email: true
}
}
});
$('#email').rules('add', {
required: true
});
这可能不是 OP 问题的答案,但我发布此内容是为了帮助搜索 jqueryvalidation Cannot read property settings of undefined
并单击此页面的任何人。
感谢@nsawaya给出的提示!
关于jquery验证动态添加所需的输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19340021/