2013-05-02 285 views
0

我有一個包含三個元素的表單。我想在用戶輸入時驗證電話號碼。如果用戶移動到下一個元素並且電話號碼包含和不是數字的字符,我想顯示一個警告框。使用JavaScript驗證電話號碼

我寫了一些代碼,但完全難住。我在使用我的功能時遇到的問題是,即使我只在電話號碼元素中輸入數字,我仍然會顯示警告框。我的代碼如下所示:

<script type="text/javascript"> 
function validateForm() 
{ 
checkNr= isNaN(document.forms[0].elements[1]) 
if(checkNr == true) 
{ 
window.alert("You can only enter numbers. Please try again") 
} 
} 
</script> 

<form> 
    <strong>FULLNAME: </strong><input type="text"/id="name"><br /> 
    <strong>PHONE NR: </strong><input type="text" id="phone" onblur="validateForm()" /> 
    <strong>NATIONALITY</strong><input type="text" id="nat" /><br /> 
    <input type="button" id="subButton" onclick="calc()" value="Submit" /> 
</form> 

非常感謝您提供的所有答案和幫助。

+0

試着提醒'document.forms [0] .elements [1]'本身看看這個價值是否是你期望的。 – ajp15243 2013-05-02 14:08:18

回答

4

變化

document.forms[0].elements[1] 

document.forms[0].elements[1].value 

您在測試元素本身,而不是元素的值。

jsFiddle example

順便說一句,如果有人進入一個破折號或括號中的電話號碼(例如,(555)123-4567),你能指望什麼發生?

+1

非常感謝您的回答。它效果很好。說實話,我沒有想過如果有人投入破折號會發生什麼。通過閱讀一些回覆,我可以看到有些模式需要使用。不幸的是我不明白代碼... – 2013-05-02 14:25:41

1

Here你會發現很多爲例,以實現自己的目標:

例如,如果您只能使用號碼:

function phonenumber(inputtxt) 
{ 
    var phoneno = /^\d{10}$/; 
    if((inputtxt.value.match(phoneno)) 
     { 
     return true; 
     } 
     else 
     { 
     alert("message"); 
     return false; 
     } 
}