2011-09-09 59 views
2

我正在使用jQuery 1.6,我想通過點擊複選框按鈕來提交表單。如何通過點擊複選框來觸發表單提交?

也就是說,我有以下的代碼提交表單

$jQuery('#search_form').submit(function() { 
    $jQuery.get(this.action, $jQuery(this).serialize(), null, 'script'); 
    return false; 
}); 

,當我點擊一個複選框,其HTML代碼是

<input type="checkbox" value="true" ... id="check_box_id"> 

我想觸發的表格提交。

我該怎麼做?另外

$jQuery("#check_box_id").click(function() { 
    $jQuery("#search").submit(); 
}); 

,您可以使用trigger方法:

+1

只需謹慎 - 通過用戶可能不熟悉的方式(即通過點擊複選框)導致表單提交可能會引起混淆。它取決於你的頁面佈局以及複選框是如何標記的,但是網絡上已經建立(和預期)的行爲並且偏離它們並不總是一個好主意。出於興趣,爲什麼你不能按照常規使用提交按鈕? – belugabob

+0

@belugabob - 也許你是對的,但我認爲在我的表單中,用戶可以理解這種行爲(我認爲...)。不管怎麼說,還是要謝謝你。 – Backo

回答

4

您可以通過簡單的不帶參數調用submit觸發submit事件

$jQuery("#search").trigger("submit"); 

,因爲它看起來像你射擊在提交事件處理程序中的異步請求,而不是使用默認的表單行爲,我會建議禁用中的複選框(或刪除事件處理程序)事件處理程序,然後在成功回調get方法中重新啓用它,以防止用戶重複提交。

+0

不提交()真的提交表單並不觸發.submit()處理程序?所以他應該使用trigger() – Andy

+0

不,調用沒有參數的'submit'只是在後臺調用'trigger(「submit」)',所以它沒有區別:https://github.com/jquery/jquery/ blob/master/src/event.js#L710 –

+0

@James Allardice - 如何禁用並重新啓用成功事件中的表單? – Backo

0
$jQ("#check_box_id").click(function(){ 
    $jQ("#search").submit(); 
}); 
0

在沒有參數的表單上調用submit()會觸發它提交。

jQuery中的大多數事件處理程序都共享此;調用.click()將模擬點擊,而.click(函數...)設置處理程序。

$(document).ready(function() 
{ 
    $('#check_box_id').click(function() 
    { 
     $('#search_form').submit(); 
    }); 
}); 
相關問題