2014-12-03 37 views
0

我有一個簡單的html註冊表單與onsubmit =「return validateForm()」其中validateForm()是javascript,以確保輸入是正確的形式和電子郵件和密碼字段匹配其確認字段。如何在失敗的JavaScript驗證時運行php腳本?

表單操作設置爲add.php。 add.php將輸入添加到mysql數據庫中。 javascript和php都可以正常工作,但即使JavaScript提示錯誤,如「密碼太短」。 PHP腳本無論如何都運行並在數據庫中創建一個新條目。

我想php腳本只能在成功的javascript驗證時運行,並且如果任何驗證失敗,用戶將保持在同一頁面上,這是如何完成的?

如果需要,我可以添加代碼,但我認爲這裏的答案是通用的。

編輯:

例如這裏是驗證名稱字段代碼:

function checkName() 
{ 
    var fName = document.getElementById("firstName"); 
    var lName = document.getElementById("lastName"); 
    if (fName.value.length >= 2 && fName.value.match(/^[A-Za-z]+$/) && lName.value.length >= 2 && lName.value.match(/^[A-Za-z]+$/)) 
     { 
      return true; 
     } 
    else 
     { 
      return false; 
     } 
} 

function validateForm(){ 
if (checkName() == false) 
     { 
      alert("First and Last Name must be at least 2 characters long and contain only alphabetic characters"); 
     document.getElementById("fName").focus(); 
     document.getElementById("fName").select(); 
     return false; 
    } 

}

+0

有'validateForm()'錯誤時返回false。此外,你應該在進行插入之前在php中驗證這些東西,因爲它很容易繞過javascript驗證。 – 2014-12-03 00:57:32

+0

這只是一個學校作業,安全是沒有關係的。另外我的validateForm()在失敗時返回false。我將用一個示例函數編輯原文。 – user2837791 2014-12-03 01:00:25

+0

如果你使用onclick =「return validateForm()」調用你的函數,它應該停止從jKuhn指出的提交表單 – David 2014-12-03 01:18:36

回答

1

它是firstNamefName?如果fName ID不存在,則該函數將遇到錯誤並退出而不返回任何內容,導致警報顯示,但表單仍然提交。

+0

id是firstName我只是調用變量fName。這應該不重要嗎?我發現我的focus()和select()使用了錯誤的ID,但我修復了這些問題,但都沒有成功。 – user2837791 2014-12-03 01:13:19

+0

'getElementById'的參數必須與元素的ID完全匹配,而不是一個變量。 – ilikesleeping 2014-12-03 01:15:03

+0

是的,元素的ID是firstName和lastName。然而,我做了,只是將每個實例包括var名稱更改爲firstName和lastName,它似乎工作。我不明白爲什麼我可以叫var varopmonkey,如果我想要的話? – user2837791 2014-12-03 01:16:52