我希望我提交的电子邮件表单能够通过 jQuery 进行验证。
如果用户输入的 val() 与数组中的任何值匹配,我想在提交之前运行一些函数。
例如。 如果我输入
abc.com
不在数组中。好吧。
bbb.net
在数组中。所以NG。
username@ccc.co.uk
字符串的一部分位于数组中。所以NG。
blah@aaa.ne.
我不在乎...让 PHP 决定其电子邮件是否有效。所以 JavaScript 上没问题。
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
在数组中。
任何解决方案将不胜感激。谢谢。
最佳答案
尝试拆分电子邮件
并比较@
之后的后半部分
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
关于javascript - jQuery 如果表单字段的值的一部分与数组中的值匹配,则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16890928/