jQuery 验证器插件无法访问匿名表单中的动态字段

jQuery Validator Plugin can't access dynamic field within anonymous form

我在部分字段中有一个包含电子邮件地址的字段,我想在用户输入时验证它并使用 this plugin

显示一条消息

更新:Fiddle Example

我的表单没有包含此字段的名称,它实际上是部分中的一部分,这是我需要验证的最后一个字段,这让我很伤心。

主要问题似乎是我如何尝试访问字段本身,因为它是动态的,使用 jQuery 我通过 $("input[name*='email']")rules: {} 访问它,但是当我尝试在验证插件功能中使用它时出现错误(jquery 不用说,我不太擅长)。

我如何访问电子邮件字段,因为它显示为 contacts[884414e3-9262-4a77-a448-b8f885703e9d].email

jQuery:

var email = $("input[name*='email']");
    $('form').validate({
        rules: {
            email: "required email",
        },
        messages: {
            email: {
                required: "Enter your Email",
                email: "Please enter a valid email address.",
            }
        }
    });

也试过:

$('form').validate({
        rules: {
            "input[name*='email']": "required email",
        },
        messages: {
            "input[name*='email']": {
                required: "Enter your Email",
                "input[name*='email']": "Please enter a valid email address.",
            }
        }
    });

如果您想获取(第一个)电子邮件字段的值,请使用 jQuery 的 val 方法。

$("input[name*='email']").val()

关于我如何实现它的一些问题以及与插件本身有关的一些误解。

它将与匿名表单一起使用,您可以搜索包含特定字符的元素,在本例中为 "email"。

不确定哪个是两个代码示例的首选实现,但都可以。然而,.NET 似乎需要替代方案。

工作代码

$(document).ready(function () {

    $('form').validate({
        submitHandler: function (form) {
            return false;
        }
    });
    $("[name*='email']").each(function() {
        $(this).rules("add", {
            required: true, // will request content
            email: true // will request a valid email
        });
    });

});

工作示例fiddle