不调用提交函数

时间:2013-09-24 16:42:41

标签: javascript jquery ajax

在文件的最后我有:

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


    $(document).ready(function() {


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

    }); });
</script>

现在,submitEvent是一个不在表单内的按钮,以及进行.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");

    });


    });

3 个答案:

答案 0 :(得分:1)

您只需将代码移到就绪函数

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

答案 1 :(得分:1)

试试这个......

$(document).ready(function() {

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

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

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

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

答案 2 :(得分:1)

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


在评论中,你说:

  

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

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

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