2013-03-05 163 views
0
<html> 
<head> 
<title> Form Validation </title> 
<style type="text/css"> 
fieldset { width: 280px; padding: 6px; } 
label { float: left; width: 100px; font: 12px Arial; padding: 5px; } 
input { margin-bottom: 5px; } 
</style> 
</head> 

<body> 
<form id="inputForm" onsubmit="return validateForm();" action="#"> 
<fieldset> 
    <label>First Name:</label><input type="text" name="first_name" /><br /> 
    <label>Surname:</label><input type="text" name="surname" /><br /> 
    <label>Postcode:</label><input type="text" name="postcode" /><br /> 
    <label>Email:</label><input type="text" name="email" /><br /> 
    <input type="submit" name="submit" value="Send form" /> 
    <input type="reset" name="reset" value="Reset" /> 
</fieldset> 
</form> 


<script type="text/javascript"> 
function validateForm() { 
    var form = document.forms['inputForm']; 
    var formats = { 
     First_name: /^[a-z]+[\-`\s]?[a-z]+$/i, 
     Surname: /^[a-z]+[\-`\S]?[a-z]+$/i, 
     Postcode: /^\d{4}$/, 
     Email:/^w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/ 
    }; 

    var elCount = form.elements.length; 
    for(var i = 0; i <elCount; i++) { 
     var field = form.elements[i]; 
     if(field.type == 'text') { 
      if(!formats[field.name].test(field.value)) { 
       alert('Invalid '+field.name.replace('_', ' ')); 
       field.focus(); 
       return false; 
      } 
    } 
} 
} 
</script> 
</body> 
</html> 

嘿傢伙試圖找出爲什麼代碼給了我一個錯誤:underfinded格式[fields.Name],但它已被定義。它只是一個簡單的形式,所以我不知道我做錯了什麼。抱歉的基本問題,但我一直在多次查看它,看不到它。再次歡呼。Javascript表單驗證錯誤

+0

,你能否告訴我們HTML源代碼? – acme 2013-03-05 13:19:35

回答

0

假設你正在談論的錯誤是在這條線:

if(!formats[field.Name].test(field.value)) { 

我建議使用小寫的「n」,在「名稱」屬性:

if(!formats[field.name].test(field.value)) { 

JavaScript是情況敏感。

UPDATE:除了我已經提到過,但還是關於區分大小寫,您formats對象有屬性名稱混合大小寫,如First_name,但相應的輸入元素小寫有name屬性,例如, name="first_name",因此當您檢索元素的name並嘗試使用它來查找formats中的屬性時,它將返回undefined。你需要做出這些匹配的情況。

修復這些錯誤,它的工作原理:http://jsfiddle.net/M4Nzr/