2013-07-01 28 views
1

嗨嘗試通過更改操作屬性驗證完成後提交用戶數據從客戶端到服務器端(這是我過去做的事情,突然它不工作) 。 我的HTML表單(POST)使用Javascript更改操作屬性不發送到PHP

 <!-- Submit data to server-side --> 
     <form id="register" method="post"> 
     <table class="tableReg" border="0"> 
      <tr class="rowReg"> 
       <td>User name:</td> 
       <td><input onfocus="resetColor('userID')" type="text" id="userID" name="user"></td> 
       <td id=note1></td> 
      </tr> 
      <tr class="rowReg"> 
       <td>Password:</td> 
       <td> 
        <input onfocus="resetColor('passwordID1')" type="password" id="passwordID1" name="password1"> 
       </td> 
       <td id=note2></td> 
      </tr> 
      <tr class="rowReg"> 
       <td>Repeat Password:</td> 
       <td> 
        <input onfocus="resetColor('passwordID2')" type="password" id="passwordID2" name="password2"> 
       </td> 
       <td id=note3></td> 
      </tr> 
      <tr class="rowReg"> 
       <td>Email:</td> 
       <td><input onfocus="resetColor('emailID1')" type="email" id="emailID1" name="email1"></td> 
       <td id=note4></td> 
      </tr> 
      <tr class="rowReg"> 
       <td>Repeat Email:</td> 
       <td><input onfocus="resetColor('emailID2')" type="email" id="emailID2" name="email2"></td> 
       <td id=note5></td> 
      </tr> 
     </table> 
      <input type="button" onclick="checkInput()" value="Submit"> 
     </form> 

如果你看到後,我按透過按鈕的信息進行覈查,如果通過驗證被髮送到服務器端,我使用的JavaScript:

function checkInput(){ 
var regexUser = /^(?=.{1,20}$)[a-zA-Z0-9]+$/;//all letters ad number and size between 1-20 
var regextPwd = /^(?=.{8,8}$)(?=.*[a-zA-Z])(?=.*\d)(?=.*[!#$%&? "]).*$/; //Password must contain 8 characters and 
                     // at least one number, one letter and one 
                     // unique character such as !#$%&? 
//Email regex 
var regexMail = /^(([^<>()[\]\\.,;:\[email protected]\"]+(\.[^<>()[\]\\.,;:\[email protected]\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; 

var errorArr = new Array(0,0,0,0,0); 

document.getElementById("register").action = "databasebuilder.php";} 

現在我驗證輸入後,它假設發送到databasebuilder.php這是在我的本地主機上的同一目錄,但它不!

我已經測試過它沒有,它應該可及爲什麼document.getElementById(「註冊」)。行動不起作用。

+1

爲什麼你不在動作屬性中首先提供URL?您仍然可以驗證您的表單並在出現錯誤的情況下取消提交。 (Plase並沒有說你從一開始就沒有設置動作,因爲當JS不可用時你不想要提交無效數據 - 服務器端驗證是__必須。) – CBroe

+0

嗯,我沒有真正想過服務器端驗證我認爲你是對的。在客戶端驗證數據沒有意義,因爲有人可以操作腳本。無論如何,我不希望從表單中提交它,所以我可以指出無效字符,以防用戶插入錯誤密碼,並且當您從表單提交頁面時,刷新頁面並且輸入將丟失,除非服務器端將其發回。該死的工作時間寫在客戶端驗證:(((我愚蠢 – Canttouchit

回答

2

你爲什麼不自己提交表單。像這樣...

document.getElementById("register").action = "databasebuilder.php"; 
document.getElementById("register").submit(); 
0

試試這個,

加入這個在您的js function

document.getElementById("register").action= "databasebuilder.php"; 
reutrn true; 

而且改變從buttontypesubmit

<input type="submit" onclick="return checkInput()" value="Submit"> 
+0

它是如何不同,除了它不會在舊版瀏覽器? – naivists

+0

這也是一個選項,但提交類型的問題是,它重新加載頁面阻止我在用戶輸入無效字符時更改頁面內容 – Canttouchit