2013-08-06 58 views
0

我想驗證使用javascript的電子郵件ID。電子郵件驗證JavaScript的行爲有所不同

下面是代碼:

if (!email) { 
     alert('empty value'); 
} else if (!ValidateEmail(email)) { 
     alert('invalid email'); 
} 

jsFiddle

它工作正常,所以我想爲什麼不把兩個條件成一個單一的條件

if ((!email) && (!ValidateEmail(email))) { 
     alert('Invalid value'); 
} 

但這一次以上腳本不起作用。 jsFiddle

任何人都可以解釋爲什麼它的行爲如此嗎?

+4

使用''||,而不是''&&。 – Mics

回答

0
if ((email) && (!ValidateEmail(email))) 

這應該是條件!驗證空郵件沒有意義,對!因此,如果任何一個條件是false最後的答案是false

,並檢查空的電子郵件,並提醒這種情況下(說時,有一些電子郵件(不空)值,但它不是一個有效的),除了在&&適當的味精爲此,你將不得不保持第一個條件!

0

這兩個條件是不同的。腳本不再工作的原因是因爲並不總是滿足兩個條件!一個可以,但不是同一時間的另一個!在第一個代碼示例中,如果電子郵件變量爲false或未設置,則只進行驗證。換句話說,保持原樣!

0

.val()(以及node.value)返回字符串,所以如果您的輸入是空白,將返回一個空字符串評估爲在JavaScript真正

空字符串。

從你的小提琴你可以簡單地擺脫(!email)因爲空字符串將無法匹配您的驗證。

0

這將是很容易的,如果你使用jQuery這裏一個例子: -

var emailpattern = /^[a-zA-Z]([a-zA-Z0-9_\-])+([\.][a-zA-Z0-9_]+)*\@((([a-zA-Z0-9\-])+\.){1,2})([a-zA-Z0-9]{2,40})$/; 

if(!emailpattern.test($('#email').val())){ 
    return false; 
    } else { 
    return true; 
    }