[英]adding rules dynamically to jquery validate gives error
我正在使用jQuery validate验证我的动态表单。 我在html上的值分别为1,2,3,4。 如果从下拉列表中选择1,则显示某个字段的一个div,如果选择2,则显示div1 +带有新字段的另一个div,以此类推,表示3和4。
所有字段都以一种形式出现
<form name="client_basic_details" id="client_basic_details" method="post" action="...">
<select name="applicant_num" id="applicant_num">
<option value="">-- Select --</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
</select>
<div id="applicant_1">
<input type="text" name="app_1_fname" id="app_1_fname">
<input type="text" name="app_1_mname" id="app_1_mname">
<input type="text" name="app_1_lname" id="app_1_lname">
</div>
<div id="applicant_2">
<input type="text" name="app_2_fname" id="app_2_fname">
<input type="text" name="app_2_mname" id="app_2_mname">
<input type="text" name="app_2_lname" id="app_2_lname">
</div>
<div id="applicant_3">
....
</div>
<div id="applicant_4">
...
</div>
</form>
选择框的onchange我将可见性设置为true,像
$("#applicant_num").change(function(){
hide("applicant_1");
hide("applicant_2");
hide("applicant_3");
hide("applicant_4");
for(var i=1; i<=$("#applicant_num").val(); i++)
{
var div_id = "applicant_"+i;
show(div_id);
//if loop given below lies here
}
});
与此同时,我将验证规则添加到字段中
if(i==1)
{
$('#applicant1_salutation').rules('add','required');
$('#applicant1_initial').rules('add','required');
$('#applicant1_suffix').rules('add','required');
$('#applicant1_fname').rules('add','required');
$('#applicant1_lname').rules('add','required');
$('#applicant1_dob').rules('add','required');
$('#applicant1_marital_status').rules('add','required');
$('#applicant1_work').rules('add','required');
$('#applicant1_no_dependant').rules('add','required');
$('#applicant1_sin').rules('add','required');
$('#applicant1_fax').rules('add','required');
$('#applicant1_cont_method').rules('add','required');
}
if(i==2)
{
}
if(i==3)
{
}
if(i==4)
{
}
对于前5个选项规则,将其附加到validate methode上,但是此后,我在控制台中收到此错误
TypeError:元素未定义
var settings = $ .data(element.form,'validator')。settings;
我没有使用每个语句添加规则,而是使用了该选项,但其结果与上述错误消息相同。
请提出建议。
我在document.ready函数中添加了validate方法
编辑:
在这里提琴: http : //jsfiddle.net/E4rua/4/
我想为其他表格(例如2,3,4)添加规则
聚苯乙烯
我在这里面临的最大问题是:
通过比较可以明显看出,默认情况下,jQuery验证程序会忽略1.9版本中的所有隐藏元素,而1.8会验证页面中的每个控件,无论它们是可见还是不可见。
要将规则添加到隐藏输入中,您必须忽略hidden属性:
$.validator.setDefaults({ ignore: []});
只需将规则添加到其他字段的验证调用即可。 默认行为是,当它们不可见时,将不对其进行验证,但是当它们不可见时,将对其进行验证。 我想这就是你想要的。
因此,如果将其添加到规则对象中:
applicant2_salutation: {
required: true
}
这将导致需要“称呼”,但仅当申请人2可见时。
工作示例: http : //jsfiddle.net/ryleyb/E4rua/5/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.