2014-09-29 130 views
-2

我已經使用以下代碼進行電子郵件驗證。它運行良好,但是我不想在字段爲空時驗證它。不需要電子郵件驗證

var filter = /^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/; 
    var sEmail = $(this).val(); 

    if (!filter.test(sEmail)) { 
     value = false; 
     $(this).css('border', '1px solid red'); 
     $(this).attr('error','true'); 
    }else{ 
     $(this).css('border', ''); 
     $(this).removeAttr('error'); 
    } 
+0

'如果($(本).VAL())=> validate'。 – melancia 2014-09-29 13:17:13

+0

修剪'$(this).val()'並在驗證之前檢查它是否爲空? – MLeFevre 2014-09-29 13:17:59

+0

@MLeFevre只需通過測試'.val()'的布爾值就可以得到結果。 http://jsfiddle.net/MelanciaUK/jumkynzd/ – melancia 2014-09-29 13:33:50

回答

1

看評論:

var sEmail = $.trim($(this).val()); 
//   ^^^^^^^-------------^---- Trim whitespace 

if (sEmail && !filter.test(sEmail)) 
// ^^^^^^^^^^--- only validate if there's something in it 
+0

我不認爲你需要調整值來檢查它是否爲空。 '.val()'當作爲布爾值進行測試時,如果它爲空則返回false。 http://jsfiddle.net/MelanciaUK/jumkynzd/ – melancia 2014-09-29 13:37:37

+0

@MelanciaUK:如果它真的是空的,是的。但是,如果用戶鍵入'「」',否。 – 2014-09-29 13:39:08

+0

我明白你的觀點。 :) – melancia 2014-09-29 13:39:52