向jquery validate动态添加规则会产生错误

adding rules dynamically to jquery validate gives error

本文关键字:错误 规则 添加 jquery validate 动态      更新时间:2023-09-26

我正在使用jQuery验证我的动态表单。我有一个下拉在我的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>

在改变选择框时,我将div(如

)的可见性设置为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个选项规则被附加到验证方法,但之后我在控制台

中得到这个错误

TypeError: element is undefined

var Settings = $.data形式,验证器).settings;

我使用了这个选项,而不是为每个语句添加规则但结果与上面的错误信息相同。

请建议。

我在文档中添加验证方法。准备好函数

编辑:

点击此处:http://jsfiddle.net/E4rua/4/

我想为其他形式添加规则,如2,3,4

p

我遇到的最大的问题是:

在比较中,很明显,默认情况下,jquery验证器忽略1.9版本中的所有隐藏元素,而1.8版本会验证页面中的每个控件,无论它们是可见的还是不可见的。

Re .

只需将规则添加到其他字段的验证调用中。默认的行为是,当它们不可见时,它们将不被验证,但是当它们可见时,它们将被验证。我想这就是你想要的。

所以如果你把这个添加到你的规则对象中:

        applicant2_salutation: {
                    required: true
            }

这将导致"salutation"是必需的,但只有当applicant2可见时。

工作示例:http://jsfiddle.net/ryleyb/E4rua/5/

要为隐藏输入添加规则,必须忽略隐藏属性:

$.validator.setDefaults({ ignore: []});