Javascript jQuery if表单字段';值的s部分匹配数组中的值,然后

Javascript jQuery if表单字段';值的s部分匹配数组中的值,然后,javascript,jquery,Javascript,Jquery,我希望我的电子邮件表单由jQuery验证 若用户类型的val()与数组中的任何值匹配,我想在提交之前运行一些函数 前。 如果我打字 abc.com不在数组中。那好吧 bbb.net位于数组中。所以呢 username@ccc.co.uk字符串的一部分在数组中。所以呢 blah@aaa.ne.我不在乎。。。让PHP决定它的电子邮件是否有效。所以,从脚本上说是可以的 html: 我使用了jquery的inArray()方法,但不知何故,例如,username@ccc.co.uk通过验证,即使ccc

我希望我的电子邮件表单由jQuery验证

若用户类型的val()与数组中的任何值匹配,我想在提交之前运行一些函数

前。 如果我打字

abc.com
不在数组中。那好吧

bbb.net
位于数组中。所以呢

username@ccc.co.uk
字符串的一部分在数组中。所以呢

blah@aaa.ne.
我不在乎。。。让PHP决定它的电子邮件是否有效。所以,从脚本上说是可以的

html:

我使用了jquery的
inArray()
方法,但不知何故,例如,
username@ccc.co.uk
通过验证,即使
ccc.co.uk
在数组中


任何解决方案都将不胜感激。thanx.

尝试
拆分电子邮件
,并在
@

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;
    }
});

尝试
拆分电子邮件
,并在
@

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;
    }
});

您正在比较的电子邮件值包含的字符比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.
    }
  });

您正在比较的电子邮件值包含的字符比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.
    }
  });
你可以使用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;
    }
});
你可以使用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;
    }
});

您的解决方案非常有效!此外,此解决方案只需检查电子邮件地址是否正确(通过检查是否包含@sign)。非常感谢。@norixxx。。很高兴能帮忙:)错过了一件事。。。如果我键入
@aaa.ne.jp
,表单就会通过。数组中只有第一个值。从第二名开始,很好。例如,
@bbb.net
blah@bbb.net
bbb.net
,无法通过。您能想到什么问题?我将
$.inArray(parts[1],arr)>0
更改为
$.inArray(parts[1],arr)>-1
,以便数组中的第一个字符串位于句柄中。:)您的解决方案非常有效!此外,此解决方案只需检查电子邮件地址是否正确(通过检查是否包含@sign)。非常感谢。@norixxx。。很高兴能帮忙:)错过了一件事。。。如果我键入
@aaa.ne.jp
,表单就会通过。数组中只有第一个值。从第二名开始,很好。例如,
@bbb.net
blah@bbb.net
bbb.net
,无法通过。您能想到什么问题?我将
$.inArray(parts[1],arr)>0
更改为
$.inArray(parts[1],arr)>-1
,以便数组中的第一个字符串位于句柄中。:)