【问题标题】:Jquery Validation for Dynamically Created Fields动态创建字段的 Jquery 验证
【发布时间】:2014-03-09 20:01:51
【问题描述】:

我有基本的javascript代码来生成如下输入文本区域

$("#btnAdd").click(function (e) {
        var itemIndex = $("#container input.iHidden").length;
        e.preventDefault();
        var newItem = $("<span class='badge badge-success'>" + itemIndex + "</span> <input id='Interests_" + itemIndex + "__Id' type='hidden' value='' class='iHidden'  name='Interests[" + itemIndex + "].Id' /><input type='text' id='InvoiceNumber_" + itemIndex + "__InvoiceNumber' placeholder='Fatura Numarası' name='[" + itemIndex + "].InvoiceNumber'/>    <input type='text' id='Interests_" + itemIndex + "__InterestText' placeholder='Fatura Tutarı(TL)' name='[" + itemIndex + "].Amount'/> <br /><br />");
        $("#container").append(newItem);
    });

我有一个用于这个动态字段的表单。我正在将此表单用于其他元素的 jquery 验证器。现在我还想验证这个动态创建的字段。

对于这里的静态字段,我的工作验证脚本。

  $('#frm_register').validate({

        focusInvalid: false,
        ignore: "",
        rules: {
            FirstName: {
                required: true
            } ....

这里是我的动态字段示例。

<input type="text" id="InvoiceNumber_0__InvoiceNumber" placeholder="Fatura Numarası" name="[0].InvoiceNumber">
<input type="text" id="Interests_0__InterestText" placeholder="Fatura Tutarı(TL)" name="[0].Amount"> 
<input type="text" id="InvoiceNumber_1__InvoiceNumber" placeholder="Fatura Numarası" name="[1].InvoiceNumber">
<input type="text" id="Interests_1__InterestText" placeholder="Fatura Tutarı(TL)" name="[1].Amount"> 

【问题讨论】:

    标签: jquery jquery-validate


    【解决方案1】:

    您可以在创建新输入元素后立即使用the .rules('add') method...

    $("#btnAdd").click(function (e) {
        var itemIndex = $("#container input.iHidden").length;
        e.preventDefault();
        var newItem = $("<span class='badge badge-success'>" + itemIndex + "</span> <input id='Interests_" + itemIndex + "__Id' type='hidden' value='' class='iHidden'  name='Interests[" + itemIndex + "].Id' /><input type='text' id='InvoiceNumber_" + itemIndex + "__InvoiceNumber' placeholder='Fatura Numarası' name='[" + itemIndex + "].InvoiceNumber'/>    <input type='text' id='Interests_" + itemIndex + "__InterestText' placeholder='Fatura Tutarı(TL)' name='[" + itemIndex + "].Amount'/> <br /><br />");
        $("#container").append(newItem);
    
        // add the rules to your new item
        $('Interests_' + itemIndex + '__Id').rules('add', {
            // declare your rules here
            required: true
        });
    });
    

    或者,对于像required 这样的简单规则,您可以在创建新元素时将required="required" 属性添加到它...

    $("#btnAdd").click(function (e) {
        var itemIndex = $("#container input.iHidden").length;
        e.preventDefault();
        var newItem = $("<span class='badge badge-success'>" + itemIndex + "</span> <input id='Interests_" + itemIndex + "__Id' type='hidden' value='' class='iHidden'  name='Interests[" + itemIndex + "].Id' /><input type='text' id='InvoiceNumber_" + itemIndex + "__InvoiceNumber' placeholder='Fatura Numarası' name='[" + itemIndex + "].InvoiceNumber'/>    <input type='text' id='Interests_" + itemIndex + "__InterestText' placeholder='Fatura Tutarı(TL)' name='[" + itemIndex + "].Amount' required='required' /> <br /><br />");
        $("#container").append(newItem);
    });
    

    【讨论】:

    • 非常感谢。如何添加规则:如果 (InvoiceNumber_" + itemIndex + "__InvoiceNumber) 不为空,则 [" + itemIndex + "].Amount 必须是必需的?
    • @umki,不知道你在问什么。只需拨打.rules('add')随时动态添加规则。
    • 我想问:每行有两个列,我想执行条件验证。如果 field1 不为 null,则 field2 是必需的。但如果 field 为 null,则不需要 field2。
    • @umki,您将使用 depends 属性应用条件规则。在此页面搜索“依赖”:jqueryvalidation.org/validate
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-09
    • 1970-01-01
    相关资源
    最近更新 更多