电话号码验证问题

时间:2013-05-21 15:21:52

标签: javascript phone-number

我已经编写了一些javascript来验证电话号码字段,如果输入了某些内容(它是一个可选字段),但它似乎没有工作,如果我输入了错误的值,它仍然提交。这是我的代码:

<script>
function validatePhone()
{ 
var num1 = document.getElementById('workno');

if (num1 !== null)
    {
    regex = /\(\d{2}\)\d{8}/;
    }
if (!num1.match(regex))
    {
    alert('That is not a correct telephone number format');
    return false;
    }
}
 </script>

<form name="eoiform" form method="POST" action="<?php echo $_SERVER["PHP_SELF"];?>" id="eoi" onsubmit="return validatePhone();">

<input type="text" id="workno" name="workno">

<input type="submit" name="submit" id="submit" value="submit">

</form>

有人能发现我的错误吗?

3 个答案:

答案 0 :(得分:2)

您的num1变量包含一个元素对象,而不是其值,因此无法使用正则表达式进行测试。

如果元素不存在,它将只返回null;如果它没有价值,它将是“”。

function validatePhone()
{ 
  var num1 = document.getElementById('workno').value;
  if (num1 !== "" && !num1.match(/\(\d{2}\)\d{8}/))
  {
    alert('That is not a correct telephone number format');
    return false;
  }
}

您的HTML中也包含无效的form method="POST"

答案 1 :(得分:0)

也许您应该从输入中选择值。你能试试吗

if (!num1.value.match(regex))

答案 2 :(得分:0)

除了其他答案中提到的问题之外,您还应该锚定正则表达式。否则,它将允许电话号码之外的额外字符。

function validatePhone()
{ 
  var num1 = document.getElementById('workno').value;
  if (num1 !== "" && !num1.match(/^\(\d{2}\)\d{8}$/))
  {
    alert('That is not a correct telephone number format');
    return false;
  }
}