如何验证动态创建的输入,例如textbox
。我有一个很大的形式,可以不时改变。
为了使更简单,我有一个变量,在该变量中,我已经存储了我想要验证的所有输入元素的所有ID's/Names
。事件要验证的字段是动态的并且可以更改,因此将其存储在变量中是正确的选择。
类似下面的代码:
@model IEnumerable<ExampleProject.Models.DynamicInput>
@{
ViewBag.Title = "Dynamic";
}
<form id="myForm" action="">
@foreach (var item in Model)
{
@Html.Label(item.Label)
@Html.TextBox(item.Label)
}
<button id="submit" name="submit">
</button>
</form>
但是现在我不确定如何从validate
函数中检索它。
<script lang="javascript" type="text/javascript">
$('#myForm').validate({
rules: {
FirstName: "required", //notice here I have hardcoded the name attribute, and it works fine. but my problem is how do i get all the name attributes since they are dynamic.
agree: "required"
}
});
</script>
答案 0 :(得分:1)
如果您将规则放在.validate()
方法内,则在调用.validate()
时该字段必须已存在。
但是,如果您在调用 input
后动态创建.validate()
,则只能使用the .rules()
methods添加这些新规则。 (尽管每个数据输入仍必须具有唯一的name
属性,但在使用name
方法时,您不必通过rules()
选择它们。)
$('#myInput').rules('add', {
required: true,
anotherRule: true,
messages: {
required: "custom message",
anotherRule: "custom message"
}
});
如果您需要同时将.rules()
应用于多个字段,则必须将其放在jQuery .each()
内...
$('input .myClass').each(function() {
$(this).rules('add', {
required: true,
anotherRule: true,
messages: {
required: "custom message",
anotherRule: "custom message"
}
});
});