2012-08-01 52 views
0

當我試圖驗證窗體使用JavaScript它帶來了警報,因爲它應該但形式獲取submited因爲沒有發生eventhoght false返回,警報工作只我第一次按提交按鈕。可有一個人告訴我什麼我做錯了什麼:Javascript窗體驗證:窗體是虛假的返回submited:

的Javascript:

function checkForm() { 

     var name, email, text; 

     name = document.contact.userName.value; 
     email = document.contact.email.value; 
     text = document.contact.textarea.value; 

     //document.write(name + " " + email + " " + text); 

     if (name == "" || email =="" || text=="") { 

      alert("Please fill all fields before submitting!"); 
      return false; 

     }else if (!looksLikeMail(email))  { 

     alert("Please enter you real email!"); 
      return false; 
     }else  { 

      alert("Your feedback was sent, Thank you!"); 
      return true; 
      }  
} 

function looksLikeMail(str)  { 

       var lastAtPos = str.lastIndexOf('@'); 
       var lastDotPos = str.lastIndexOf('.'); 
       return ((lastAtPos < lastDotPos) && lastAtPos > 0 && str.indexOf('@@') == -1 && lastDotPos > 2 && (str.length - lastDotPos) > 2); 
>  } 

HTML:

<form name="contact" action="login" method="POST" onsubmit="checkForm()"> 
       <input type="hidden" name="page" value="feedback"> 
       <div data-role="fieldcontain"> 
        <fieldset data-role="controlgroup" data-mini="true"> 
         <label for="textinput1"> 
          Name: 
         </label> 
         <input id="name" placeholder="Enter your full name" value="" type="text" name="userName"/> 
        </fieldset> 
       </div> 
       <div data-role="fieldcontain"> 
        <fieldset data-role="controlgroup" data-mini="true"> 
         <label for="textinput2"> 
          Email 
         </label> 
         <input id="email" placeholder="Enter your email" value="" type="email" name="email" /> 
        </fieldset> 
       </div> 
       <div data-role="fieldcontain"> 
        <fieldset data-role="controlgroup"> 
         <label for="textarea1"> 
          Feedback 
         </label> 
         <textarea id="textarea" placeholder="Enter your text here" name="textarea"></textarea> 
        </fieldset> 
       </div> 
       <input type="submit" data-inline="true" data-theme="b" data-icon="check" data-iconpos="right" value="Submit" /> 
      </form> 

回答

3

變化

<form name="contact" action="login" method="POST" onsubmit="checkForm()">

<form name="contact" action="login" method="POST" onsubmit="return checkForm()">

onsubmit將取消提交,如果你的函數返回false,但只有當onsubmit也將返回false。所以你必須通過checkForm()的返回值。

+0

感謝您的快速回答,但這個建議沒有幫助我。 – 2012-08-01 07:46:52

+0

然後有些東西你沒有告訴我們。這工作。 – 2012-08-01 07:47:37

+0

我展示了我的所有代碼還能告訴你什麼? – 2012-08-01 07:52:38