2013-06-03 21 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; 
    } 
}); 
相關問題