2017-03-01 113 views
0

我在使用Javascript验证表单时遇到问题。我尝试了一堆不同的东西,但我无法让它工作。这可能是我错过了一些完全基本的东西,我很新。请让我知道我可能会改变什么。Javascript无法通过验证

<!DOCTYPE html> 
 

 
<html lang = "en"> 
 
<head> 
 
\t <title> </title> 
 
\t <meta charset = "utf-8" /> 
 
\t 
 
</head> 
 
<body> 
 
\t <script lang = "text/javascript"> 
 
\t 
 
\t document.getElementById("myForm").onsubmit = validateForm(); 
 
\t 
 
\t function zipcheck(sZip) 
 
\t { 
 
\t \t var postalRegex = /^d{5}(-\d{4})?$/; 
 
\t \t return postalRegex.test(sZip); 
 
\t } 
 
\t function validateForm() 
 
\t { 
 
\t \t if (zipcheck(document.getElementById("zip")) 
 
\t \t \t return true; 
 
\t \t else 
 
\t \t { 
 
\t \t \t alert(document.getElementById("zip") + " is not a valid zip code"); 
 
\t \t \t return false; 
 
\t \t } 
 
\t } 
 
\t </script> 
 
\t <form id = "myForm" action = "" > 
 
\t <p> 
 
\t 
 
\t <label> Zip Code 
 
\t \t <input type = "text" id = "zip" /> 
 
\t </label> 
 
\t 
 
\t <input type = "submit" name = "submit" /> 
 
\t 
 
\t </p> 
 
\t </form> 
 
\t 
 
</body> 
 
</html>

回答

1

的问题你的是,检查HTML元素不是值。它应该是document.getElementById("zip").value

document.getElementById("myForm").onsubmit = validateForm; 
 
\t 
 
\t function zipcheck(sZip) 
 
\t { 
 
\t \t var postalRegex = /^d{5}(-\d{4})?$/; 
 
\t \t return postalRegex.test(sZip); 
 
\t } 
 
    
 
\t function validateForm() 
 
\t { 
 
\t \t if (zipcheck(document.getElementById("zip").value)){ 
 
\t \t \t return true; 
 
\t \t }else 
 
\t \t { 
 
\t \t \t alert(document.getElementById("zip").value + " is not a valid zip code"); 
 
\t \t \t return false; 
 
\t \t } 
 
\t }
<!DOCTYPE html> 
 
<html lang = "en"> 
 
<head> 
 
\t <title> </title> 
 
\t <meta charset = "utf-8" /> 
 
</head> 
 
<body> 
 
\t <form id = "myForm" action="/test" method="get" > 
 
\t <p> 
 
\t <label> Zip Code 
 
\t \t <input type = "text" id = "zip" /> 
 
\t </label> 
 
\t <input type = "submit" name = "submit" /> 
 
\t </p> 
 
\t </form> 
 
</body> 
 
</html>

这里是jsfiddlerhttps://jsfiddle.net/u9suy516/

可选信息工作示例:使用addEventListener时,你也必须在使用preventDefault()功能通过event参数,但不需要return陈述。

function validateForm(event) 
{ 
    if (!zipcheck(document.getElementById("zip").value)) { 
     alert(document.getElementById("zip").value + " is not a valid zip code"); 
     event.preventDefault(); 
    } 
} 
+0

感谢您的快速响应!我对代码进行了这些更改,但仍未验证表单。 – NerevarineKing

+0

添加I编辑的答案,其他一些地区wheren't正确 –

+0

'的document.getElementById( “myForm的”)的onsubmit = validateForm();'应该是'的document.getElementById( “myForm的”)的onsubmit = validateForm;'或'document.getElementById(“myForm”)。addEventListener(“submit”,validateForm)' –