日期:2014-05-16  浏览次数:20402 次

javascript如何监听 form.submit()事件
众所周知,动态表单提交(form.submit())无法触发onsubmit事件。

如果想要想要捕捉到form.submit(),在此提供两种解决方案


第一种:

在form.submit()方法之前加上form.fireEvent("onsubmit");关于fireEvent()方法请参考http://topic.csdn.net/u/20100430/09/eafd10d3-0329-4e34-a30f-8102c724816f.html

form.fireEvent("onsubmit")方法用于触发在form标签上定义的onsubmit="方法名"事件

所以要在表单动态提交时做什么处理只要写在onsubmit=“要做的事情”里即可

下面举个例子,实现功能为在表单提交时屏蔽所有的超链接按钮

js

/************************* 避免表单重复提交 ********************************/

function doSubmit(){

   document.getElementById("form1").fireEvent("onsubmit");

    document.getElmentById("form1").submit();

}

//绑定表单提交事件

function newsubmit() {
$("#form1").bind("submit",function(){listenSubmit();});
}

//表单提交时执行函数

function listenSubmit(){
$("body a").each(function(){
      $(this).attr("disabled","true");
       });

$("body a:hidden").each(function(){
     $(this).attr("disabled","true");
    });

}


jQuery(function($) {
newsubmit();
});


第二种:

提交表单用jquery提供的提交方法

$("#formId").sumit();

用此方法 表单提交 同样可以被监听到


除了此方法为好像还有一种通过prototype来重新定义submit事件但是没试成功

希望高手指教