2014-11-07 71 views
0

我正在進行表單驗證。當出現錯誤時,Onsubmit正在提交。我不確定問題出在哪裏。我認爲這是圍繞代碼的正則表達式部分,但不確定。這個驗證腳本中的錯誤在哪裏?js驗證中的錯誤在哪裏

function test_form() 
{ 

    var userName = document.regForm.userName.value; 
    var firstName = document.regForm.firstName.value; 
    var lastName = document.regForm.lastName.value; 
    var email = document.regForm.email.value; 
    var email2 = document.regForm.email2.value; 
    var password = document.regForm.password.value; 
    var password2 = document.regForm.password2.value; 
    var birthDay = document.regForm.birthDay.value; 
    var birthMonth = document.regForm.birthMonth.value; 
    var birthYear = document.regForm.birthYear.value; 
    var tou = document.regForm.tou.checked; 

    var regSpec = /!|@|#|\$|%|-|_|&|\*|\(|\)|\+|\[|\]|\{|\}|:|;|'|"|\||\\|,|<|>|\.|\?|\/|\^/; 
    var regUser = /!|@|#|\$|%|&|\*|\(|\)|\+|\[|\]|\{|\}|:|;|'|"|\||\\|,|<|>|\.|\?|\/|\^/; 

    var error = false; 

    // Test all fields for empty and dob format and tou acceptance 

if(userName === "" || firstName === "" || lastName === "" || email === "" || email2 === ""  || password === "" || password2 === "" || tou == false || birthDay == "--Day--" ||   birthYear == "--Year--" || birthMonth == "--Month--") 
{ 

    error = true; 

} 

    // Test all fields for applicable special characters 

if(firstName.match(regSpec) || lastName.match(regSpec)) 
{ 

    error = true; 

} 


if(userName.match(regUser) || password.match(regUser) || password2.match(regUser)) 
{ 

    error = true; 

} 

// Test emails for format and match 

if(email.indexOf("@") == -1 || email.indexOf(".") == -1 || email2.indexOf("@") == -1 ||  email2.indexOf(".") == -1) 
    { 

    error = true; 

    } 

// Test passwords for match 

if(password != password2) 
{ 

    error = true; 

} 

    // test email for match 

if(email != email2) 
{ 

    error = true; 

} 

// Send 

return error; 


} 
+0

你是如何使用這個功能的。要停止提交表單,您必須返回false。如果此函數用作onsubmit處理程序,那麼如果出現錯誤,函數返回true,這將意味着表單將提交 – OJay 2014-11-07 00:26:06

+1

節省您的時間和精力,並且只使用經過充分測試和穩定的jquery驗證插件 – Yang 2014-11-07 00:26:35

+2

並且還保留記住,爲了通過驗證,用戶可以簡單地在瀏覽器中禁用JavaScript。你總是必須在服務器端驗證數據! – Yang 2014-11-07 00:28:00

回答

0

你是如何使用這個功能的。要停止提交表單,您必須返回false。如果此函數用作onsubmit處理函數,那麼如果出現錯誤,函數返回true,這意味着表單將提交 - OJay 16分鐘前

此評論者是正確的。我將我的布爾值更改爲noError,並確保將錯誤設置爲false。現在效果很好。只需要做一些PHP驗證太:)謝謝。