2012-11-20 120 views
1
<form accept-charset="UTF-8" action="/twitts" class="dialog " id="twitt-form" method="post" title="Dialog" selected="true"> 
    <div style="margin:0;padding:0;display:inline"> 
     <input name="utf8" type="hidden" value="✓"> 
     <input name="authenticity_token" type="hidden" value="BkLNJsJfbEzfQrCTDWHW4OvvOh0l2pLPxxEJ/bGt2IY="></div> 

     <input id="anonymous_id" name="anonymous[id]" type="hidden" value="22"> 
     <fieldset> 

      <h1>Отправить сообщение</h1> 
      <a class="button leftButton" type="cancel">Отмена</a> 
      <a id="submit-twitt" class="button blueButton">Отправить</a> 
      <!-- <input class="button blueButton" id="submit-twitt" name="commit" type="submit" value="Отправить" /> --> 

      <input id="twitt-text" name="twitt[text]" size="30" type="text"> 

     </fieldset> 
    <div class="spinner"></div>  
</form> 

當我打電話jQuery的提交表單不起作用

$('#twitt-form').submit(); 

在調試器或內單擊事件處理程序只是什麼都沒有發生。並且即使將提交處理程序設置爲表格

$('#twitt-form').submit(function() { 
     $('#twitt-text').val(''); 
     $('#twitt-form').attr('selected', false); 
     return false; 
    }); 

Handler是否可以工作,但表單不提交任何數據。爲什麼?

多:當我按在表單字段中輸入#twitt-text形式只是提交以及和.submit處理工作也。

+0

@ubercooluk'返回false;'是爲了防止默認表單操作 –

+0

當我按下Enter鍵上的表單字段的形式只提交。 – s9gf4ult

回答

0
$('#twitt-form').submit(function() { 
     $('#twitt-text').val(''); <--- this it will make form value empty 
     $('#twitt-form').attr('selected', false); 
     return false;    
    }); 
+0

是的,這是我想要的,如果我按下表格字段窗體上的回車鍵只是提交。 – s9gf4ult

+0

@ s9gf4ult你沒有做任何事情,所以它的品牌之前沒有意義的,這點...或者如果它不是,請讓我知道 –

0

爲什麼你在使用return false時沒有任何條件。

return false; 

是爲了防止默認的表單動作。這就是爲什麼表單沒有被提交。

+0

多:當我按下Enter鍵表單字段#twitt文本格式上所看到的好, .submit處理程序也可以。 – s9gf4ult

+0

我會自己處理提交處理程序,但是當我按下回車鍵時我只能提交表單,而我無法停止此操作。 – s9gf4ult

0

有三個問題,我用這個代碼中看到,其中兩個已被現在長大:

  1. 內,您的提交功能,第一行會清除輸入文本字段,所以即使將其提交,它不會提交任何內容。
  2. 的第二件事情是,#twitt-form的形式本身,因此它不具有selected屬性。
  3. 表格提交將被使用return false;取消。

現在,如果你試圖阻止該網頁提交由AJAX的形式去任何地方,這是你可以做什麼的例子:比

$('#twitt-form').submit(function(e) { 

    $.ajax({ 
     url: $(this).attr('action'), 
     data: $(this).serialize(), 
     type: $(this).attr('method'), 
     success: function(dataFromTheServer) { 
      // do whatever 
     } 
    }); 

    $('#twitt-text').val(''); 

    e.preventDefault(); 
    return false; 
}); 

但是其他的我不確定你想在這裏做什麼。

+0

我剛剛嘗試完全像這樣,但是當我持續輸入文本字段表單提交兩次。這對我來說很奇怪。 – s9gf4ult

+0

它提交在ajax和表單提交,但'''返回false'''必須防止事件傳播。 – s9gf4ult

+0

@ s9gf4ult它不應該提交兩次,因爲我們通過使用'return false;'來阻止表單提交操作。你確定你沒有在別的地方調用另一個表單提交功能嗎?在Firebug/Chrome的調試器/ IE開發者工具中,您是否在Network選項卡上看到兩個POST請求? –