2013-06-03 39 views
1

我希望我的电子邮件表单提交由jQuery验证。jQuery如果表单字段的部分值与数组中的值匹配,则

如果用户键入val()匹配数组中的任何值,我想在提交之前运行某个函数。

ex。 如果我输入

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

bbb.net在数组中。歌曲。

[email protected]字符串的一部分在数组中。歌曲。

[email protected]我不在乎......让PHP决定它是否有效的电子邮件。所以javascriptly确定。

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

JSFIDDLE

我用jquery的​​方法,但不知何故,例如,[email protected]获得通过即使ccc.co.uk是在阵列验证。

任何解决方案将不胜感激。感谢名单。

回答

1

尝试splitting the email@

​​

Check Fiddle

+0

您的解决方案的伟大工程!而且这个解决方案只是检查它的电子邮件地址(通过检查它是否包含@符号)。非常感谢你。 – norixxx

+0

@norixxx ..很高兴有帮助:) –

+0

错过了一件事......如果我键入'@ aaa.ne.jp',表格会通过。数组中只有第一个值。从第二,很好。即。 '@ bbb.net','blah @ bbb.net'或'bbb.net',无法通过。你能想到什么问题? – norixxx

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. 
    } 
    }); 
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; 
    } 
}); 
相关问题