1

在文件的末尾,我有:

<script>
    $("#submitEvent").click(function() {
        $("#eventForm").submit();
    });


    $(document).ready(function() {


    $('#eventForm').submit(function() {
        console.log("I am on submit");

    }); });
</script>

现在 submitEvent 是按钮,它不在表单中,所以是 on .click 事件的原因。

当按下按钮时,表单提交被正确触发:

<form id="eventForm" action="${contextPath}/dashboard/event/new"
                        method="post">

现在我希望在提交被触发时会触发另一个事件,但由于某种原因实际上被忽略了。而不是console.log,我毫不奇怪会使用ajax,但即使console.log也不会打印任何东西,所以不会触发事件..

更新,没有按照你的建议做:-):

$(document).ready(function() {

    $("#submitEvent").click(function() {
        $("#eventForm").submit();
    });




    $('#eventForm').submit(function() {
        console.log("I am on submit");

    });


    });
4

3 回答 3

1

尝试这个...

$(document).ready(function() {

    $("#submitEvent").click(function() {
        $("#eventForm").submit();
    });

    $('#eventForm').submit(function(e) {
        e.preventDefault();
        console.log("I am on submit");
    });
});

它将停止表单提交,因此您现在可以看到事件是否实际被触发。

可能只是在您看到控制台输出之前,正在提交的表单正在重新加载页面。

于 2013-09-24T16:49:18.323 回答
1

您只需将代码移动到 ready 函数中

<script>
    $(document).ready(function() {
       $("#submitEvent").click(function() {
          // run ajjax code here
       });

       $('#eventForm').submit(function(e) {
           e.preventDefault(); // stops the page from submiting
           console.log("I am on submit");
        }); 
     });
</script>

我更新了代码,您不需要提交表单。只需点击运行ajax。

于 2013-09-24T16:44:29.583 回答
1

如果您说表单提交处理程序没有被调用的原因是您在控制台中看不到输出,请记住提交表单完全拆除并替换页面。在控制台被清除之前,您可能没有时间查看日志消息。


在评论中,你说:

嗯,那么我如何检查是否会调用 ajax。

您可以通过在console.log语句上设置断点并查看断点是否被命中来进行检查。或者,如果您想调试 1990 年代风格,请使用alert.

但请注意,如果表单的结果将替换页面,则从表单提交处理程序中执行 ajax 是不可靠的。(如果表单的结果不会替换页面,您可能没问题。)这是因为 ajax 是异步的,这意味着您的提交处理程序可以启动它,但在被拆卸取消之前它没有时间完成。

于 2013-09-24T16:54:25.140 回答