MVC Jquery 验证数据表。新行未验证
MVC Jquery Validation DataTable. New Row is not validating
我正在使用 html5 开发一个 MVC WebApp。
我有一个表单(由 Razor 构建,因此所有内容都已正确命名),只要我不添加新行,jquery 验证就很有用。
当我添加新行时,Jquery 无法识别新行。
我尝试删除旧验证并添加新验证 -> 无结果
- $.removeData(form,"validator");form.validate()
我试图以某种方式刷新它,但它就是行不通。
我有一些名称重复的解决方案,但这不是我的问题。
对此有任何帮助吗?
初始化我的Table
$("#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>
已修复:
function resetFormValidator(formId) {
$(formId).removeData('validator');
$(formId).removeData('unobtrusiveValidation');
$.validator.unobtrusive.parse(formId);
}
我正在使用 html5 开发一个 MVC WebApp。
我有一个表单(由 Razor 构建,因此所有内容都已正确命名),只要我不添加新行,jquery 验证就很有用。
当我添加新行时,Jquery 无法识别新行。
我尝试删除旧验证并添加新验证 -> 无结果 - $.removeData(form,"validator");form.validate()
我试图以某种方式刷新它,但它就是行不通。 我有一些名称重复的解决方案,但这不是我的问题。
对此有任何帮助吗?
初始化我的Table
$("#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>
已修复:
function resetFormValidator(formId) {
$(formId).removeData('validator');
$(formId).removeData('unobtrusiveValidation');
$.validator.unobtrusive.parse(formId);
}