如何仅允许和验证 10 封电子邮件或最少以逗号分隔的电子邮件。它应该只允许 10 封电子邮件或最少,并且每封电子邮件都以逗号分隔。现在我只能验证每封以逗号分隔的电子邮件
<form method="post" action="" id="add_engagement" name="add_engagement" class="form-horizontal">
<tr><td>Email Recipients</td>
<td><textarea name="email_recipients" id="email_recipients" >{$Notification.email_recipients}</textarea><br/><span style="color:red">*</span>Note: Separated by commas(,)</td>
</tr>
<input type="submit" class="post_button" id="edit_notification" value="Update" name="edit_notification" /></td></tr>
</form>
<script>
$(function(){
$('#edit_notification').one('click', function () {
jQuery.validator.setDefaults({
debug: true,
success: "valid"
});
$.validator.addMethod('multiEmails', function(value, element) {
if (this.optional(element)) {
return true;
} else {
var valid = true;
$.each($.trim(value).replace(/,$/, '').split(','), $.proxy(function (index, email) {
if (!$.validator.methods.email.call(this, $.trim(email), element)) {
valid = false;
}
}, this));
return valid;
}
}, 'One or more email addresses are invalid');
$("#add_engagement").validate({
rules: {
email_recipients: {
required: true,
multiEmails:true,
},
},
messages: {
email_recipients: {
required: "Please enter email",
},
},
submitHandler: function(form) {
form.submit();
},
});<script>
最佳答案
您可以添加计数器:
var ec = 0;
$.each($.trim(value).replace(/,$/, '').split(','), $.proxy(function (index, email) {
ec++;
if (!$.validator.methods.email.call(this, $.trim(email), element)) {
valid = false;
}
}, this));
if (ec<1 || ec>10) valid = false;
或者您可以添加另一个关于电子邮件地址数量的验证规则,并带有单独的错误消息。
关于javascript - Jquery 验证中最多允许 10 封电子邮件,每个电子邮件以逗号分隔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31488856/