【发布时间】:2014-11-30 10:00:55
【问题描述】:
我正在处理一个包含多个字段和一个提交按钮的 Web 表单。单击按钮时,我必须验证是否已填写所需的文本框以及电话号码的格式是否正确。我只能接受 7 位或 10 位数字的电话号码,但可以接受 (,)、(-) 等字符。如果此框为空或电话号码格式不正确(不是 7 或 10 个数字长,不是数字)或留空,我必须在文本框周围添加红色边框。在用户更正错误之前,该边框应该保持在原位。
我无法让它正常工作。我尝试了几种不同的方法来做到这一点,但得到了几种不同类型的错误。一种方法似乎可行,但红色边框只显示一秒钟然后消失,并且文本框中的值被重置。
这是我的代码和我创建的 jsfiddle 的链接:
Javascript:
<script type="text/javascript">
function validateForm() {
return checkPhone();
}
function checkPhone() {
var phone = document.forms["myForm"]["phone"].value;
var phoneNum = /^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/;
if(phone.value.match(phoneNum)) {
return true;
}
else {
document.getElementById("phone").className = document.getElementById("phone").className + " error";
return false;
}
}
</script>
HTML:
<form name="myForm" onsubmit = "return validateForm()">
Phone Number: <input type="text" id="phone"><br>
</form>
JSFiddle:
【问题讨论】:
-
您将
phone设置为元素value属性,然后在测试中,您再次访问value属性,这一次是您已经获得的值,这不会'不存在。 -
您已经将表单控件引用为phone,为什么还要使用
document.getElementById?而不是match,你应该使用test。 -
这不是引用问题的欺骗,因为“什么是电话号码”的标准不同。参考问题中提出的解决方案不符合此处的要求。
标签: javascript html validation phone-number