当我添加处理程序时,Jquery提交不工作

Jquery submit not working when I add a handler.

本文关键字:Jquery 提交 工作 添加 处理 程序      更新时间:2023-09-26

我在页面上有一堆复选框,我想在其中一个被修改时自动提交,并捕获响应。如果我运行这段代码,我可以看到第一条控制台消息,但看不到第二条。好像表单从来没有提交过。

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

谁能告诉我为什么在这种情况下添加处理程序会杀死提交?

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

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