0

如果输入了某些内容(这是一个可选字段),我编写了一些 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>

谁能发现我的错误?

4

3 回答 3

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

form method="POST"您的 HTML 中也有无效的。

于 2013-05-21T15:31:24.817 回答
0

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

if (!num1.value.match(regex))
于 2013-05-21T15:30:47.677 回答
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;
  }
}
于 2013-05-21T15:34:36.280 回答