当用户在输入字段(emailaddressVal)中键入与我的数组中的值匹配的值(invalidEmailAddresses)时,我想显示错误消息。但我不知道如何去做。 谢谢你的帮助!
$(document).ready(function(){
$("input[name='emailAddress']").blur(function(){
// Actual Email Validation function
var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
var hasError = false;
var emailaddressVal = $("input[name='emailAddress']").val();
var invalidEmailAddresses =
['aol.com', 'yahoo.com', 'yahoo.fr', 'juno.com', 'hotmail.com', 'gmail.com'];
if($.inArray(invalidEmailAddresses,emailaddressVal) == -1) {
alert('The email provided is not from a business related domain');
}
});
});
答案 0 :(得分:2)
尝试以下代码
$(document).ready(function () {
$("input[name='emailAddress']").blur(function () {
var emailAddress = $("input[name='emailAddress']").val().trim();
if (isValidEmailAddres(emailAddress)) {
var hasError = false;
var emailaddressVal = emailAddress.split('@').slice(1)[0].trim();
var invalidEmailAddresses = ['aol.com', 'yahoo.com', 'yahoo.fr', 'juno.com', 'hotmail.com', 'gmail.com'];
if ($.inArray(emailaddressVal, invalidEmailAddresses) >=0) {
alert('The email provided is not from a business related domain');
}
} else alert("Invalid EmailID");
});
function isValidEmailAddres(emailID) {
var regexExp = new RegExp(/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i);
return regexExp.test(emailID);
}
});
见fiddle 我所做的改变
我添加了电子邮件验证功能。只有当它是有效的电子邮件地址时,您才会进行主机名检查。
$.inArray
的正确格式为$.inArray( stringvalue, array)
。所以它必须是$.inArray(emailaddressVal,invalidEmailAddresses)
emailaddressVal将包含完整的电子邮件地址。首先,您需要从该完整的电子邮件地址中提取主机名。它完成了
var emailaddressVal = emailAddress.split('@').slice(1)[0].trim();
因此,如果您的电子邮件地址为abc@gmail.com
,则上述行将返回gmail.com
。
$ inArray的返回类型是arraylist(invalidEmailAddresses)中传递的字符串(在您的情况下为emailaddressVal)的位置。它将返回一个大于或等于0的值。根据您的要求,当您希望主机名为主机名时,您必须显示该消息。你需要这样做
if($.inArray(emailaddressVal, invalidEmailAddresses) >=0)
答案 1 :(得分:1)
您可以像这样使用jQuery inArray测试。
var emailaddressVal = $("input[name='emailAddress']").val();
代码beloe测试用户输入以查看它是否在数组中并存储它所在的索引。
var inArrTest = $.inArray(emailaddressVal, invalidEmailAddresses);
此代码测试inArrTest变量并获取用户匹配值的索引。
if (inArrTest) {
// Your error message would go here. //
console.log(invalidEmailAddresses[inArrTest]);
}
您可以将错误消息嵌套在if块中。
答案 2 :(得分:0)
原始代码不起作用,因为-1检查变量是否不在数组中。
$.inArray(invalidEmailAddresses,emailaddressVal) == -1)
Sukanya的代码检查以查看变量是否大于0,这是数组的第一个索引。
$.inArray(emailaddressVal,invalidEmailAddresses) > 0