JQuery - динамическое добавление правила проверки в несколько текстовых полей
Я пытаюсь добавить правило проверки в несколько текстовых полей динамически. Здесь js:
//validate form.
$("#SubmitForm").validate();
$("input[id*=Hours]").rules("add", {
number: true,
messages: {
number: "Please enter a valid Hours"
}
});
Это правило применяется к самому первому текстовому полю на странице с "Часами" в идентификаторе, но затем не применяется к любому другому.
Кто-нибудь знает, что здесь не так?
Спасибо,
Джастин
Ответы
Ответ 1
Вы можете добавить правило к каждому элементу, согласованному с помощью подстановочного знака с .each()
, например:
$("#SubmitForm").validate();
$("input[id*=Hours]").each(function() {
$(this).rules("add", {
number: true,
messages: {
number: "Please enter a valid Hours"
}
});
});
Надеюсь, это поможет!
Ответ 2
Мне удалось заставить его работать:
<%
int index = 0;
foreach (var log in Model.InvoiceLogs) {
%>
<tr>
<td class="topalign">
<%: log.LogDate.ToShortDateString() %>
<%: Html.Hidden("InvoiceLogs[" + index + "].InvoiceID", log.InvoiceID) %>
<%: Html.Hidden("InvoiceLogs[" + index + "].InvoiceLogID", log.InvoiceLogID) %>
</td>
<td class="editor-field-medium"><%: Html.TextArea("InvoiceLogs[" + index + "].Description", Convert.ToString(ViewData["Description_" + log.InvoiceLogID]))%></td>
<td class="editor-field-small topalign">
<%: Html.TextBox("InvoiceLogs[" + index + "].Hours", ViewData["Hours_" + log.InvoiceLogID])%>
<script type="text/javascript">
$(document).ready(function () {
$("#InvoiceLogs_<%: index %>__Hours").rules("add", {
number: true,
messages: {
number: "Invalid Hours"
}
});
});
</script>
</td>
</tr>
<%
index++;
}
%>
</table>
Однако это не похоже на хорошее решение. Каким образом можно динамически добавлять правила проверки в список элементов управления вводом?