2014-01-28 48 views
3

我真的傷透了我的幾個腦細胞在這個單這看起來很簡單,但我不能得到它的工作 -使用Javascript/jQuery的if語句不工作

$(function() { 
    function check() { 
     var myname = $("#myname").val(); 
     var myemail = $("#myemail").val(); 
     var password = $("#password").val(); 
     var repeatpassword = $("#repeatpassword").val(); 

     if (myname == "") { 
      $("#mynameresult").append("Please Enter Your Name"); 
      return false; 
     } 
     if (myemail =="") { 
      $("#myemailresult").append("Please Enter Your Email"); 
      return false; 
     } 
     if (password == "") { 
      $("#passwordresult").append("Please Enter a Password"); 
      return false; 
     } 
     if (repeatpassword == "") { 
      $("#repeatpasswordresult").append("Please Repeat the Password"); 
      return false; 
     } 
     return true; 
    } 
}); 

我的長相形式像這樣 -

<table class="registrationform"> 

    <form method="post" onsubmit = "return check();" action="/ToDoneList/ToDoneList/usr/registrationparse.php" enctype="multipart/form-data" > 

    <tr><td>Username: </td><td><input class="focusfox" type="text" name="username" id="myname"></td><td id="mynameresult"></td></tr> 
    <tr><td>Email: </td><td><input type="text" name="email" id="myemail"></td><td id="myemailresult"></td></tr> 
    <tr><td>Password: </td><td><input type="password" name="password" id="password" /></td><td id="passwordresult"></td></tr> 
    <tr><td>Repeat the Password: </td><td><input type="password" name="repeatpassword" id="repeatpassword"/></td><td id="repeatpasswordresult"></td></tr>   
    <tr><td rowspan="2"><img id="captcha" src="/securimage/securimage_show.php" alt="CAPTCHA Image" /></td><td><input type="text" name="captcha_code" maxlength="6" title="Enter What you see on the Left If you are having trouble click the New Image Button"/></td></tr> 
    <tr><td><button type="button "onclick=\'document.getElementById("captcha").src = "/securimage/securimage_show.php?" + Math.random(); return false\'>New Image</button></td> 
    <tr><td class="regbutton" colspan="2"><input type="submit" value="Register" ></td></tr> 

    </form> 
</table> 

問題是,當我用空格提交表單時,這個函數不會被捕獲。我認爲這肯定是我的if語句的一個問題,因爲當我將它刪除並且將值保存到變量中並將這些值附加到變量之外,if語句之外的返回值爲false時,它會阻止它提交。

無論如何,有什麼,你可以看到這裏是錯誤的?先謝謝您的幫助!

+0

你的HTML無效 - 你不能像這樣在'

'內放置''。另外,請始終打開瀏覽器開發者控制檯;你目前收到一個錯誤。 – Pointy

+1

它應該是另一種方式:將表格放在表格中。 – Barmar

+0

爲什麼你認爲這是'if'語句的問題?你沒有在Javascript控制檯中發現一個錯誤,指出函數'check'沒有被定義? – Barmar

回答

7

您正在定義「就緒」回調中的「檢查」功能。因此,它不是全局的,所以你不能從你的「提交」處理程序調用它。

通過jQuery而不是附上您提交處理程序:

$('form').submit(check); 

將是在年底(內部) 「準備」 處理程序。

+0

太棒了!修復它。如果我將其定義在準備好的回調之外,它會被視爲全球性的嗎?這樣做是否有什麼問題,如果函數不會被調用直到頁面被加載? – Jimbo

+0

不需要把事情保持在「準備就緒」的處理程序中,通過jQuery附加事件處理程序更簡潔,更靈活。現代最佳實踐是讓HTML完全免費。 – Pointy

1

把你的函數check()放在$(function(){})塊之外!

+0

是的,這也是:) – Pointy