繁体   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