0

Я разрабатываю MVC WebApp с html5.MVC JQuery Validation DataTable. New Row не проверяет

У меня есть форма (построена по Razor, поэтому все правильно названо), если я не буду добавлять новую строку, то проверка 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