2010-04-20 15 views
0

我有一個窗體中有許多複選框。用戶將檢查一個或多個複選框,然後單擊實際提交按鈕的刪除按鈕,然後刪除所選複選框的相應記錄。如何使用JQUERY停止提交表單?

所需的操作步驟如下: -

當用戶選擇一個或多個複選框和點擊提交按鈕然後JQUERY代碼得到執行,其中

  1. 它應該檢查,如果有任何校驗框被選中;如果不;然後顯示警報消息,並不提交表單。
  2. 如果它發現選中了一個或多個複選框,它應該使用確認提醒框詢問用戶確認刪除的確認。
  3. 如果用戶在確認框上按YES按鈕,那麼它應該使用JavaScript提交聲明提交表單。
  4. 如果用戶按下「否​​」按鈕,則應取消選中選中的複選框,並且不應提交表單。

這是我寫的JQUERY代碼。

$(document).ready(function() { 
    $("#id_delete").click(function() { 
     var temp = $("#id_frm input:checkbox:checked"); 
     var len = temp.length; 

     if(len==0) { 
      alert("Please select the order."); 
     } else { 
      if (confirm("Are you sure to delete the selected orders.")) { 
       $("#id_frm").submit(); 
      } else { 
       temp.checked=false; 
      } 
     } 
    });  
}); 

問題:

此代碼不能正常工作。這裏 1.它沒有選中複選框時提交表單。 2.用戶在確認對話框中按NO按鈕時提交表格。

我想只在按鈕單擊事件上寫這個代碼。

請指導我在這個問題的朋友。

+1

你能編輯你的jQuery代碼,以便我們可以閱讀它嗎? :) – 2010-04-20 10:42:02

回答

1

由於id_delete被提交按鈕,你將需要調用preventDefault()方法的單擊事件處理程序停止提交表格:

$(document).ready(function(){ 
    $("#id_delete").click(function(e){ // add "e" for click event object 
     var temp=$("#id_frm input:checkbox:checked"); 
     var len=temp.length; 
     if(len==0) { 
      alert("Please select the order."); 
      e.preventDefault(); // stop form submission 
     } else { 
      if(confirm("Are you sure to delete the selected orders.")) { 
       // no need to submit the form manually 
       // the browser will do so after this function completes successfully 
       // $("#id_frm").submit(); 
      } else { 
       temp.checked=false; 
       e.preventDefault(); // prevent default here as well 
      } 
     } 
    }); 
}); 
2

下面是一般模式。

$('form').submit(function() { 
    // return true to submit, return false to stop submit 
}); 

http://api.jquery.com/submit/

+0

你好朋友!感謝您的快速回復,但實際上根據您的代碼,它會檢查表單是否被提交,但實際上我希望在按鈕單擊時使用此功能,因爲表單上還有其他事件需要提交。 – 2010-04-20 10:52:10

1
$(document).ready(function() { 
    $('form#id_frm').submit(function() { 
     var temp=$("#id_frm input:checkbox:checked"); 
     var len=temp.length; 
     if(len==0) { 
      alert("Please select the order."); 
     } else { 
      if(confirm("Are you sure to delete the selected orders.")) { 
       return true; 
      } else { 
       temp.checked=false; 
       return false; 
      } 
     } 
    }); 
}); 
+0

你好朋友! 感謝您的快速回復,但實際上根據您的代碼,它會檢查表單何時被提交,但實際上我希望在按鈕單擊時使用此功能,因爲表單上還有其他事件需要提交。 – 2010-04-20 10:51:55

3

方法如下:

$("#id_frm").submit(function(ev){ 
ev.preventDefault(); 
});