验证动态创建的输入标记

时间:2014-09-16 19:02:14

标签: jquery asp.net-mvc-4 jquery-validate

如何验证动态创建的输入,例如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>

1 个答案:

答案 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"
        }
    });
});