Javascript 以普通js格式提交表单';t触发jquery附加的事件

Javascript 以普通js格式提交表单';t触发jquery附加的事件,javascript,jquery,form-submit,Javascript,Jquery,Form Submit,我有这样的代码 <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js"></script> <script type="text/javascript"> $(function(){ $("#main_form").submit(function(){ alert("submitting"); }

我有这样的代码

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js"></script>
<script type="text/javascript">
    $(function(){

        $("#main_form").submit(function(){
            alert("submitting");
        });

        $("#main_form").on("submit", function(){
            alert("ON submitting");
        });


        $("#lnk").click(function(){
            //$("#main_form").submit(); //when submitting like this - event is triggered
            document.getElementById("main_form").submit();  //no submitting alerts are triggered
        });
    });
</script>

<h4><?php echo time(); ?></h4>

<form id="main_form" action="">
    <input type="text" value="x"/>
    <input type="submit" value="submit-btn"/>
</form>

<a id="lnk" href="#">test submit js</a>
我只收到表单提交,但没有通知。 但是当我通过jquery取消对提交的注释时

$("#main_form").submit();
警报又回来了。 谁能解释一下为什么会这样

PS
我有一个用纯js提交表单的遗留代码,我不想更改它,因此,我决定只绑定Submit事件,并在自定义函数中执行一些检查,但我遇到了如上所述的问题,我认为问题来自这样一个事实,即只有当我们从用户那里获得iTreaction时才会调用事件,这意味着当从代码。

顺便说一下,以下代码是相同的:

$("#main_form").submit(function(){
    alert("submitting");
});

$("#main_form").on("submit", function(){
    alert("ON submitting");
});
submit
事件发生时,它们都会被激发


您可以检查这一点:

调用submit()方法时,浏览器不会触发元素的onsubmit事件。当您使用
jQuery().trigger(“submit”)
jQuery正在为您调用本机
submit()
方法,但由于它没有“看到”本机事件,并且本机
submit()
没有触发本机onsubmit,因此不会调用它。但是,这是浏览器的一个怪癖,超出了jQuery的范围。

>>当从代码中激活它们时,无法自动调用它们。|但这是美元(“#主表格”).submit();引发事件,而不是document.getElementById(“主表单”).submit();
$("#main_form").submit(function(){
    alert("submitting");
});

$("#main_form").on("submit", function(){
    alert("ON submitting");
});