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

为FORM添加ONSUBMIT事件
FORM本身已经有一个onsubmit事件.如下:
  <form action="#" id="form1" onsubmit="sub();">
  <input type="submit" value="submit">
  </form>
我想实现在提交表单时先执行另一个函数,再执行FORM的onsubmit事件,如下:
function f()
{
var fo = document.getElementById("form1");
method = fo.onsubmit;

fo.onsubmit=function(){

alert ("111111111111111111111111111......");

eval(method);
return true;
};
}
这样写是错的,请路过的好心人给点代码或建议,(捧个人场也行).

------解决方案--------------------
首先
原来的sub()如果真的只是的SUB的话,可以这么写,但是如果是函数(有返回true或false),就要onsubmit="return sub()"了
另外
method = fo.onsubmit; 

fo.onsubmit=function(){ 

alert ("111111111111111111111111111......"); 

eval(method); 
return true; 
}; 
这么写的确是错的离谱了
method = fo.onsubmit是把fo.onsubmit原来的函数委托给method变量
而eval()适用于执行动态字符串命令.你这样写明显是错的

JS添加事件有特定的函数,IE是attachEvent,FIREFOX是addEventListener
所以可以写一个兼容的东西,下面是按照你的要求写的一个例子

function f() 

var fo = document.getElementById("form1"); 
var newFunction = function(){ 
alert ("111111111111111111111111111......"); 
return true; 

if (window.addEventListener)
fo.addEventListener("onsubmit",newFunction,false);
else
fo.attachEvent("onsubmit",newFunction);


对应的移除指定委托函数还有detachEvent()和removeRvrntListener(),可以去网上具体查一下