0

未提交我有一個包含下列的形式模態組織:形式在iPad上

<div class="modal fade" id="by-email" role="dialog" > 
    <div class="modal-dialog"> 
     <div class="modal-header"> 
      <small class="waiting"></small> 
     </div> 
     <div class="modal-content"> 
      <form action="/test" method="post" id="form-email"> 
       <button type="button" class="btn btn-default btn-modal" data-dismiss="modal">Cacenl</button> 
       <input type="submit" class="btn btn-primary btn-modal btn-send" value="Send"> 
      </form> 

     </div> 
    </div> 
</div> 

而且,我使用jQuery來顯示「加載GIF」一旦用戶提交表單通過提交按鈕:

$('.btn-send').on('click', function(e){ 

    /* with this line, I pretend to disable both buttons in order to 
     prevent the user click them while the form is submitted */ 
    $('.btn-modal').attr('disabled', "disabled"); 

    /* show the gift image */ 
    $('.waiting').fadeIn('fast'); 
}); 

在大多數瀏覽器中它很酷。但在iPad中,表單從未提交過。根據我調試會話這是發生在iPad上:

  1. Submit按鈕點擊禁用
  2. 按鈕
  3. 加載圖像顯示

奇怪的是,我可以使它在iPad上工作,如果我刪除行$('.btn-modal').attr('disabled', "disabled");,但結果按鈕沒有被禁用,也沒有顯示加載。那麼,我怎樣才能防止iPad中的這個錯誤?預先感謝您

+2

添加'event.preventDefault();'或'返回false;'在事件處理程序 – Tushar

+0

我認爲,我的問題是混淆。我喜歡像在其他瀏覽器中那樣在iPad中提交表單,但是使用'e.preventDefault()'只會停止要提交的表單。 – manix

+0

該頁面將重新加載表單提交 – Tushar

回答

1

讓表單提交而不更改參與/觸發提交過程的元素。後來禁用按鈕:

$('.btn-send').on('click', function(e){ 

    setTimeout(function() { 
     /* with this line, I pretend to disable both buttons in order to 
     prevent the user click them while the form is submitted */ 
     $('.btn-modal').attr('disabled', "disabled"); 

     /* show the gift image */ 
     $('.waiting').fadeIn('fast'); 

    }, 1); 

}); 
+0

這適用於桌面瀏覽器,現在適用於iPad!但是讓我說你非常罕見的東西。通過此代碼,表單現在已提交,但動畫未在iPad中顯示。看起來像表單提交後不支持動畫 – manix

+0

你可以用'$('。等待')。fadeIn('fast');'進出'setTimeout'。 – Igor

+0

@manix在標準表單提交後瀏覽器將導航 - 使您的動畫不相關。 – Jasen

1

提交按鈕點擊的默認操作是提交表單。在jQuery中,您可以使用事件處理函數中的event.preventDefault()return false;來防止發生默認操作。

事件的默認動作不會被觸發

http://api.jquery.com/event.preventdefault/

你的代碼看起來應該是這樣

$('.btn-send').on('click', function(e){ 
    e.preventDefault(); 
    $('.waiting').fadeIn('fast'); 
}); 
+0

沒有我的朋友,我不想停止要提交的表單。我想讓它成爲iPad。爲了避免混淆,我已經更新了一些作品的問題 – manix

0

你可以通過AJAX提交表單。成功後,您可以禁用該按鈕。一個例子是:

$('.btn-send').on('click', function(e){ 
    $.ajax({ 
     url: /test, 
     type:'POST', 
     data: { 'foo': foo}, 
     success: function(data) { 
       $('.btn-modal').attr('disabled', "disabled"); 

       /* show the gift image */ 
       $('.waiting').fadeIn('fast');  
     } 
    )}; 
}); 

你可能需要編輯這一點,但這是要點。

+0

謝謝,但我認爲不必使用Ajax只是在視覺上禁用這兩個按鈕。 – manix

+0

您想提交表單,但保留在頁面上並禁用該按鈕,對嗎? – jgabb

+0

不,在iPad中未提交表單,我只是想修復它(在iPad中) – manix