2013-05-02 66 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; 
     } 
}