【发布时间】:2016-05-27 20:15:03
【问题描述】:
我正在开发一个带有 html5 的 MVC WebApp。
我有一个表单(由 Razor 构建,因此所有内容都正确命名),只要我不添加新行,jquery 验证就可以作为一种魅力。
当我添加新行时,Jquery 无法识别新行。
我试图删除旧的验证并添加新的 -> 没有结果 - $.removeData(form,"validator");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>
【问题讨论】:
标签: jquery model-view-controller jquery-validate unobtrusive-validation