我已经编写了一些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>
有人能发现我的错误吗?
答案 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;
}
}