我在页面上有一堆复选框,我想在其中一个被修改后自动提交,并捕获响应。如果我运行此代码,我可以看到第一个控制台消息,但不是第二个。似乎表格从未提交过。
<script type ="text/javascript" >
$(document).ready(function(){
$('.project_checkbox').change(function(){
console.log('this does get called');
$(this).parent().submit(function() {
console.log('this never gets called');
return false;
});
});
});
</script>
如果我删除处理程序并运行它,而是表单提交,我的浏览器会打开相应表单的URL。我可以从输出中看出它正在为复选框读取正确的值:
<script type ="text/javascript" >
$(document).ready(function(){
$('.project_checkbox').change(function(){
console.log('this does get called');
$(this).parent().submit();
});
});
</script>
有人能说出为什么在这种情况下添加处理程序会导致提交失败吗?
答案 0 :(得分:1)
您将事件绑定到$(this).parent()
,因此只有在提交表单时才会执行。要提交表单,只需在绑定后直接调用方法:$(this).parent().submit
。
答案 1 :(得分:1)
.submit( function() { } )
与.submit()
不同。第一个设置在提交表单时调用的函数,相当于.bind('submit', function() { } )
。第二个实际上触发了提交事件,相当于.trigger('submit')
。有关详细信息,请参阅http://api.jquery.com/submit/。