jquery - jQuery 中的 2+(多封)电子邮件验证文本输入

标签 jquery validation email multiple-instances

我已经为此工作了几个小时,但似乎无法使其发挥作用。 我在客户部分的同一输入字段中需要多封电子邮件。

现在我有(这对于一封电子邮件来说非常有用):

<script language="JavaScript">
$(document).ready(function(){
    $("form#editclient").validate({
            rules: {
            Contact: {
                required: true
            },
            Clientname: {
                required: true
            },
            ClientLogin: {
                required: true
            },
            ClientPassword: {
                required: true
            },
            email: {
                required: true,
                multiemail: true
            }
        },
        messages: {
            Contact: {
                required: "Please enter your Contact Nmae."
            },
            Clientname: {
                required: "Please enter your Client Name"
            },
            ClientLogin: {
                required: "Please enter a login."
            },
            ClientPassword: {
                required: "Please enter a password"
            },
            email: {
                required: "Please enter an Email Address",
                multiemail: "You must enter a valid email, or comma separate multiple"
            }
        }
});
});
</script>
    <input type="Text" id="email" name="Email" value="#Trim(Email)#" maxlength="60" class="inputText430 email required">

我发现这个应该可以让多个验证器工作:

jQuery.validator.addMethod(
"multiemails",

function (value, element) {
    if (this.optional(element)) // return true on optional element
    return true;
    var email = value.split(/[;,]+/); // split element by , and ;
    valid = true;
    for (var i in email) {
        value = email[i];
        valid = valid && jQuery.validator.methods.email.call(this, $.trim(value), element);
    }
    return valid;
},

jQuery.validator.messages.multiemail);

但我无法让它正常工作。有人可以帮助我在一个文本字段中验证 2 封或多封电子邮件吗?

提前致谢。

(已编辑以在规则和消息中添加多电子邮件) (用下面的解决方案编辑) 解决方案

<form>
    <input id='emailTest' name='emailTest' />
    <input type='submit' />
</form>
    <script type="text/javascript">
    jQuery.validator.addMethod(
    "multiemail",
    function (value, element) {
        var email = value.split(/[;,]+/); // split element by , and ;
        valid = true;
        for (var i in email) {
            value = email[i];
            valid = valid && jQuery.validator.methods.email.call(this, $.trim(value), element);
        }
        return valid;
    },
    jQuery.validator.messages.multiemail
);

$("form").validate({
    debug: true,
    rules: {
            emailTest: {
                multiemail: true
            }
        },
    messages: {
            emailTest: {
                multiemail: "You must enter a valid email, or comma separate multiple"
            }
        },
    submitHandler: function(form) {
            return false;
        }
});

最佳答案

我认为代码中存在一些语义错误,这会导致一些您意想不到的事情发生。

我已设法通过按名称而不是按类型将自定义处理程序映射到字段来使您的自定义处理程序正常工作 - 我不确定覆盖是否在插件中有效。

rules: {
    emailTest: {
        multiemail: true
    }
}

此外,在处理程序中,您将 multiemails 作为标识符,并在稍后将其称为 multiemail,不确定这会产生多大的影响。

这是完整的工作示例:http://jsfiddle.net/jbergler/7jXn7/2/

关于jquery - jQuery 中的 2+(多封)电子邮件验证文本输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17927971/

相关文章:

javascript - 如何使用 Joi.ref() 的数学运算来使用 Joi 验证对象?

jquery - 如何在 javascript (Jquery) 中放置 html css php

jquery - 有JavaScript的代码契约库吗?

javascript - 为什么单个基于 JQuery 的内容 slider 不适合我? (bxSlider,js中的逗号)

validation - 电子邮件地址中显示名称的最大长度是多少

html - 提交按钮在 html 表单上的定位

php imap 读取正文消息

email - Mandrill电子邮件未到达任何邮箱,但Mandrill显示状态 'Delivered'

javascript - 淡入具有特定类的 div 的通用代码,在第一次运行后删除函数

javascript - 无法找到页面链接的 URL。