2013-05-30 95 views
0

我有一個函數用於驗證必須輸入電話號碼的表單。我試圖做的是,如果輸入了一個數字,確保數字格式正確,這意味着該字段不是強制性的。我遇到的問題是,如果該字段留空(這是可以接受的),它仍然會提示消息「這是不正確的電話號碼格式」,而應該只是不驗證該字段,如果它是空的。這裏是我使用的代碼:Javascript驗證問題?

function validateHome() { 
    var num2 = document.getElementById('homeno').value; 

    if (num2 !== "" && !num2.match(/\(\d{2}\)\d{8}/)) { 
     alert('That is not correct telephone number format'); 
     return false; 
    } 
    return true; 
} 

任何人都可以幫我指出我的錯誤嗎?

+0

'num2'在警報時的值是什麼,但不應該是? –

+0

與HTML的小提琴將有所幫助 – BeNdErR

+0

@MattBall我只是離開這個領域空。我希望它只驗證該字段是否有條目,將該字段留空是允許的,在這種情況下,該函數當然不應該對其進行驗證。 – AJJ

回答

4

如果num2的值爲空,則其值可能未定義。

更好的方法可能是:

if (num2 && !num2.match(/\(\d{2}\)\d{8}/))

它將檢查NUM2實際上是定義,而不是空白。

+0

工作得很好,謝謝! – AJJ

0

不應該是if (num2 == "" || !num2.match(/\(\d{2}\)\d{8}/))

+0

不,它不應該。只有在該字段非空並且不匹配正則表達式時才應該發生警報。 –

+0

只需改變爲'num2!=「」'或Ed把'num2'只是檢查'num2'是'truthy'(同樣的東西) –