0

我使用html5设计了MVC WebApp。MVC Jquery验证数据表。 New Row未验证

我有一个表格(由剃刀打造,所以一切都是正确命名的),只要我不会添加一个新行的jQuery验证工作的魅力。

当我添加一个新行时,Jquery不能识别新行。

我试图删除旧的验证,并添加新的一个 - >无结果 - $ .removeData(形式,“验证”); 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:功能(tableSelector,控制器,动作,元件) { 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. 重新验证

    $(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> 
    

回答

0

固定它:

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

您应该使用的解决方案,还删除了以前的valdiation事件处理程序:'$( “形式”)removeData( “验证”) .removeData( “unobtrusiveValidation”) .off(“submit.validate点击.validate focusin.validate focusout.validate keyup.validate invalid-form.validate“); $ .validator.unobtrusive.parse(“form”);' – JotaBe