[英]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.