2014-04-29 69 views
0

我是jQuery的新手。表單處理程序不防止默認

我想提交一個表單,但表單處理程序不阻止表單提交。

這是我的形式:

<form action = "myForm.php" id="testForm"> 
     <ul data-role="listview" data-style="inset"> 
      <li> 
       <label>Message: </label> 
       <input type="text" name="message"/> 
      </li> 
      <li> 
       <label>From: </label> 
       <input type="text" name = "from" /> 
      </li> 
      <li> 
       <label>To: </label> 
       <input type="text" name = "to" /> 
      </li> 
     </ul> 
     <center><input type="submit" /></center> 
    </form> 

和jQuery的(它的形式出現後)

<script> 
     $("#testForm").submit(function(event) { 
      event.preventDefault(); 
      var $form = $(this), 
      messageValue = $form.find("input[name = "message"]").val(), 
      messageFrom = $form.find("input[name = "from"]").val(), 
      messageTo = $form.find("input[name = "to"]").val(), 
      url = "myForm.php"; 
      var posting = $.post(url, {message: messageValue, from: messageFrom, to: messageTo}) 
      posting.done(function(data) { 
       var content = $(data).find("#content"); 
       $("#result").empty().append(content); 
      }); 
     }); 
    </script> 

但表單處理程序沒有阻止默認提交。對於我做錯什麼的任何幫助非常感謝。

+1

這裏是一個小輕讀,這將有助於您瞭解正在發生的事情 - HTTP:/ /stackoverflow.com/questions/1357118/event-preventdefault-vs-return-false您的代碼適用於我,但您可能希望繼續並將腳本放在文檔準備好處理程序中,然後進行測試。 –

+2

你應該在控制檯中出現錯誤,檢查並修復它。例如,這是錯誤的語法:'.find(「input [name =」message「]」)' –

+0

謝謝!現在,我有點笨......我應該用單引號的時候用雙引號...... – MaxPower

回答

1

你也必須小心,單引號和雙引號在你的選擇

<script type="text/javascript"> 
$(document).ready(function(){ 
     $("#testForm").submit(function(event) { 
      event.preventDefault(); 
      var $form = $(this), 
      messageValue = $form.find("input[name = 'message']").val(), 
      messageFrom = $form.find("input[name = 'from']").val(), 
      messageTo = $form.find("input[name = 'to']").val(), 
      url = "myForm.php"; 
      var posting = $.post(url, {message: messageValue, from: messageFrom, to: messageTo}) 
      posting.done(function(data) { 
       var content = $(data).find("#content"); 
       $("#result").empty().append(content); 
      }); 
     }); 

}) 
</script> 

 messageValue = $form.find("input[name = 'message']").val(),//correct 
     messageValue = $form.find('input[name = "message"]').val(),//correct 
     messageValue = $form.find('input[name = 'message']').val()//no 
     messageValue = $form.find("input[name = "message"]").val()//no