2011-09-09 66 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(); 
    }); 
}); 
相关问题