MVC Jquery验证DataTable。 New Row未验证

时间:2016-02-16 13:53:58

标签: jquery model-view-controller jquery-validate unobtrusive-validation

我正在使用html5开发MVC WebApp。

我有一个Form(由Razor构建,因此一切都被正确命名),只要我不添加新行,jquery验证就可以作为一个魅力。

当我添加新行时,Jquery无法识别新行。

我尝试删除旧的验证并添加新的验证 - >没有结果      - $ .removeData(form," validator"); form.validate()

我尝试以某种方式刷新它但它不会工作。 我的一些解决方案名称是重复的,但这不是我的问题。

对此有何帮助?

  1. 初始化我的表

    $("#plantsTable").dataTable({
    "paging": false,
    "searching": false,
    "bInfo": false,
    "fixedHeader": true,
    "columns": [
        { "orderDataType": "dom-text-numeric", "sType": "numeric" },
        { "orderDataType": "dom-text", "sType": "string" },
        { "orderDataType": "dom-select", "sType": "string" },
        { "orderDataType": "dom-checkbox", "sType": "numeric", },
        { "orderDataType": "dom-checkbox", "sType": "numeric", },
        null,
        null,
        null
    ],
    "order": [[1, "asc"]],
    "aoColumnDefs": [{
        "bSortable": false,
        "aTargets": ["no-sort"]
    }]
    

    });

  2. 初始验证

    $(selector).validate();
    $(selector).valid();
    $(selector).tooltip(...);
    
  3. 添加新行

    addNewRow:function(tableSelector,controller,action,element) {     hasChanges = true;     var rowCount = $(tableSelector).children(' tbody')。children(' tr')。length;

    $.ajax({
        url: "/" + controller + "/" + action,
        type: "POST",
        success: function (data) {
            $(tableSelector).children('tbody').append(data);
            $(element).show();
        },
        data: { "rowCount": rowCount }
    });
    

    }

  4. ReValidate(?)

    $(selector).validate();
    $(selector).valid();
    $(selector).tooltip(...);
    
  5. 示例HTML(添加新行后)

    <form action="/Anlagen" id="plantsForm" method="post" novalidate="novalidate">
      <tr role="row" class="odd">
        <td class="tableInputCell" hidden="">
          <input data-val="true" 
            data-val-number="The field AnlageNrID must be a number." 
            id="Anlagen_2__AnlageNrID" name="Anlagen[2].AnlageNrID"
            readonly="readonly" type="text" value="28" tabindex="-1">
            <span class="field-validation-valid"
             data-valmsg-for="Anlagen[2].AnlageNrID"
             data-valmsg-replace="true" style="display:none"></span>
        </td>
        <td class="tableInputCell sorting_1">
          <input data-val="true"
            data-val-length="Das Feld &quot;Bezeichnung&quot; muss eine Zeichenfolge mit einer maximalen Länge von 30 sein." 
            data-val-length-max="30"
            data-val-required="Das Feld &quot;Bezeichnung&quot; ist erforderlich." 
            id="Anlagen_2__AnlageBez" name="Anlagen[2].AnlageBez"
            style="width:450px" type="text" value="(Alle Anlagen)"
            class="valid">
              <span class="field-validation-valid"
                data-valmsg-for="Anlagen[2].AnlageBez"
                data-valmsg-replace="true" style="display:none"></span>
        </td>
    </tr>
    <tr>
        <td class="tableInputCell" hidden="">
          <input data-val="true"
            data-val-number="The field AnlageNrID must be a number."
            id="Anlagen_3__AnlageNrID" name="Anlagen[3].AnlageNrID" 
            readonly="readonly" type="text" value="">
            <span class="field-validation-valid"
              data-valmsg-for="Anlagen[3].AnlageNrID"
              data-valmsg-replace="true" style="display:none"></span>
        </td>
        <td class="tableInputCell">
          <input data-val="true" 
            data-val-length="Das Feld &quot;Bezeichnung&quot; muss eine Zeichenfolge mit einer maximalen Länge von 30 sein."
            data-val-length-max="30"
            data-val-required="Das Feld &quot;Bezeichnung&quot; ist erforderlich." 
            id="Anlagen_3__AnlageBez" name="Anlagen[3].AnlageBez"
            style="width:450px" type="text" value="">
            <span class="field-validation-valid"
              data-valmsg-for="Anlagen[3].AnlageBez"
              data-valmsg-replace="true" style="display:none"></span>
        </td>
      </tr>
    </form>
    

1 个答案:

答案 0 :(得分:0)

修正了它:

function resetFormValidator(formId) {
    $(formId).removeData('validator');
    $(formId).removeData('unobtrusiveValidation');
    $.validator.unobtrusive.parse(formId);
}