我希望我的电子邮件表单可以通过jQuery验证。
如果用户输入的val()匹配数组中的任何值,我想在提交之前运行一些函数。
离。 如果我输入
abc.com
不在数组中。好的。
bbb.net
在数组中。所以NG。
username@ccc.co.uk
字符串的一部分在数组中。所以NG。
blah@aaa.ne.
我不在乎......让PHP决定是否有效的电子邮件。所以javascriptly OK。
HTML:
<form action="./" method="post" id="test">
email address: <input type="text" id="mail">
<input type="submit" val="SUBMIT " id="subm">
</form>
的javascript:
var arr = [
'aaa.ne.jp', 'bbb.net', 'ccc.co.uk', 'ddd.co.kr'
];
$('#test').on('submit', function() {
var _value = $('#mail').val();
if( $.inArray(_value, arr) > 0 || _value == '') {
console.log(_value + ' cant be accepted');
return false;
} else {
console.log(_value + ' is GO!');
return false;//do not submit just for the sake of example.
}
});
我使用了jquery的inArray()
方法,但不知何故,例如,即使username@ccc.co.uk
在数组中,ccc.co.uk
也会通过验证。
任何解决方案将不胜感激。感谢名单。
答案 0 :(得分:1)
尝试splitting the email
并在@
var arr = [
'aaa.ne.jp', 'bbb.net', 'ccc.co.uk', 'ddd.co.kr'];
$('#test').on('submit', function () {
var _value = $('#mail').val();
if (_value !== '' && _value.indexOf('@') > -1) {
var parts = _value.split('@');
if ($.inArray(parts[1], arr) > 0 || _value == '') {
console.log(_value + ' cant be accepted');
return false;
} else {
console.log(_value + ' is GO!');
return false; //do not submit just for the sake of example.
}
} else {
console.log(_value + ' cant be accepted');
return false;
}
});
<强> Check Fiddle 强>
答案 1 :(得分:0)
您要比较的电子邮件值包含更多字符,这些字符表示inArray()方法的工作原理。这不是直接的比较。你可以做到这一点。它会在'@'之后获取所有内容,以便在$ .inArray中进行比较。
$('#test').on('submit', function() {
var _value = $('#mail').val();
var _value2 = _value.split("@").pop();
if( $.inArray(_value2, arr) > 0 || _value2 == '') {
console.log(_value + ' cant be accepted');
return false;
} else {
console.log(_value + ' is GO!');
return false;//do not submit just for the sake of example.
}
});
答案 2 :(得分:0)
您可以使用grep
var arr = [
'aaa.ne.jp', 'bbb.net', 'ccc.co.uk', 'ddd.co.kr'];
$('#test').on('submit', function () {
var _value = $('#mail').val(),
_matches = $.grep(arr, function (val, i) {
return _value.indexOf(val) != -1
});
if (_matches.length > 0) {
//contains something
} else {
console.log(_value + ' cant be accepted');
return false;
}
});