添加处理程序时,Jquery提交不起作用。

时间:2011-07-31 04:34:08

标签: javascript jquery

我在页面上有一堆复选框,我想在其中一个被修改后自动提交,并捕获响应。如果我运行此代码,我可以看到第一个控制台消息,但不是第二个。似乎表格从未提交过。

<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>

有人能说出为什么在这种情况下添加处理程序会导致提交失败吗?

2 个答案:

答案 0 :(得分:1)

您将事件绑定到$(this).parent(),因此只有在提交表单时才会执行。要提交表单,只需在绑定后直接调用方法:$(this).parent().submit

答案 1 :(得分:1)

.submit( function() { } ).submit()不同。第一个设置在提交表单时调用的函数,相当于.bind('submit', function() { } )。第二个实际上触发了提交事件,相当于.trigger('submit')。有关详细信息,请参阅http://api.jquery.com/submit/