2013-12-12 41 views
1

我一直在尋找解決方案一段時間...我以爲我找到了它,但最終它不工作,我只是無法管理了看看我做錯了什麼...jquery搜索字符@輸入值無插件

我想要實現的是,當我在contactform中的「#電子郵件」inputfield包含錯誤的電子mailadress邊框應突出顯示紅色。現在用我的代碼,只有當輸入字段爲空時纔會突出顯示。 所以我想檢查輸入字段#email的值是否包含@字符或不。

這裏是輸入字段#email我jQuery代碼:

$("form").on("submit",function(){ 

    valid = true; 

if ($("#email").val() == '' || $("#email").val().indexOf(/[@]/) == false) { 
     $("#email").css("outline-color","#FF4E00") 
     $("#email").css("outline-style", "solid"); 
     $("#email").css("outline-width", "2px"); 
     $("#email").attr("placeholder" , "Vul een correct e-mailadresin!"); 
     $("#email").css("color", "#FF4E00"); 
     valid = false; 
    } 
)}; 

任何人可以幫助我嗎?我是新的這一點,這是一個有點不清楚現在... 而對於我的困惑英語對不起......

+0

indexOf(「@」)== -1'應該綽綽有餘,但它遠沒有確保該字段具有有效電子郵件地址的可靠方式。 –

+1

'.indexOf()'不應該返回一個數字(位置)? – melancia

+0

我會使用charPos('@') –

回答

1

您可以使用下列的方法:https://stackoverflow.com/a/2855946/682480


function isValidEmailAddress(emailAddress) 
{ 
    var pattern = new RegExp(/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i); 
    return pattern.test(emailAddress); 
}; 

$("form").on("submit", function() 
{ 
    valid = true; 

    var $email = $("#email"); 
    if (!isValidEmailAddress($email.val())) 
    { 
     $email 
      .css 
      ({ 
       "outline-color": "#FF4E00", 
       "outline-style": "solid", 
       "outline-width": "2px", 
       "color": "#FF4E00" 
      }) 
      .attr("placeholder" , "Vul een correct e-mailadresin!"); 

     valid = false; 
    } 
)}; 
+0

我不想知道如何長解析,正則表達式採取... – aksu

+1

這是非常快速...檢查自己:http://so.devilmaycode.it/jquery-validate-email-address-regex/ –

+0

謝謝!我從來沒有聽說過正則表達式,這可能是一個恥辱,所以我要檢查它。 – user3046998

0
$("#email").val().match(/@/) == null 
0
$("#email").val().charPos('@') !== -1 
0

String.indexOf()需要一個普通的字符串而不是正則表達式,並返回整數而不是布爾值。從我的控制檯開始:

"abc".indexOf(/[@]/) == false 
false 
"abc".indexOf("@") == -1 
true