0

我有一个包含三个元素的表单。我想在用户输入时验证电话号码。如果用户移动到下一个元素并且电话号码包含不是数字的字符,我想显示一个警报框。

我写了一些代码,但完全被难住了。我的功能遇到的问题是,即使我只在电话号码元素中输入数字,我仍然会显示警报框。我的代码如下所示:

<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>

提前感谢您的所有回答和帮助。

4

3 回答 3

4

改变

document.forms[0].elements[1]

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

您正在测试元素本身,而不是元素的值。

jsFiddle 示例

顺便说一句,如果有人输入带有破折号或括号的电话号码(例如(555)123-4567),您会发生什么?

于 2013-05-02T14:09:11.217 回答
1

在这里你会发现很多例子来实现你的目标:

例如,如果您只能使用 number :

function phonenumber(inputtxt)  
{  
  var phoneno = /^\d{10}$/;  
  if((inputtxt.value.match(phoneno))  
        {  
      return true;  
        }  
      else  
        {  
        alert("message");  
        return false;  
        }  
}
于 2013-05-02T14:10:39.300 回答
0

你应该用正则表达式来做。看这里:

用于电话号码验证的综合正则表达式

使用 JavaScript 验证电话号码

于 2013-05-02T14:07:53.300 回答