Я разрабатываю MVC WebApp с html5.MVC JQuery Validation DataTable. New Row не проверяет
У меня есть форма (построена по Razor, поэтому все правильно названо), если я не буду добавлять новую строку, то проверка jquery работает как очарование.
Когда я добавляю новую строку, JQuery не распознает новую строку.
Я попытался удалил старую проверку и добавить новый одну -> Нет результата - $ .removeData (форма «валидатор»); form.validate()
Я пытался как-то обновить его, но это просто не работает. Я несколько решений, где имя дублировалось, но это не моя проблема.
Помощь по этому вопросу?
Инициализировать мой стол
$("#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"] }]
});
Иниц Проверка
$(selector).validate(); $(selector).valid(); $(selector).tooltip(...);
Добавить Роу
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 } });
}
перепроверить
$(selector).validate(); $(selector).valid(); $(selector).tooltip(...);
Образец 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 "Bezeichnung" muss eine Zeichenfolge mit einer maximalen Länge von 30 sein." data-val-length-max="30" data-val-required="Das Feld "Bezeichnung" 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 "Bezeichnung" muss eine Zeichenfolge mit einer maximalen Länge von 30 sein." data-val-length-max="30" data-val-required="Das Feld "Bezeichnung" 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>
Вы должны использовать решение, которое также удаляет предыдущие обработчики событий valdiation:. '$ ("Форма") removeData ("валидатор") .removeData ("unobtrusiveValidation") .off (" submit.validate нажмите .validate focusin.validate focusout.validate keyup.validate invalid-form.validate "); $ .validator.unobtrusive.parse ("form"); ' – JotaBe