簡體   English   中英

動態添加規則到jQuery驗證給出錯誤

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM