submit与onsubmit

发生顺序:onsubmit -> submit

 

1.阻止表单提单:

<script>
function submitFun()
{
//逻辑判断
return true; //允许表单提交
//逻辑判断
return false;//不允许表单提交
}
</script>
<form οnsubmit=" reture submitFun();"> //注意此处不能写成 οnsubmit="submitFun();" 否则将表单总是提交的
</form>

2.onsubmit()与submit() :

 

<script>
function fun() { alert("form_submit"); }
</script>
<form οnsubmit="fun()">
<input type="submit" id="aaa" value="submit">   <!--能弹出form_submit-->
<input type="button" id="bbb" value="onclick_submit" οnclick="document.forms[0].submit()">
<!-- 表单会提交,但是不会执行fun() 原因是 onsubmit事件不能通过此种方式触发(在IE环境) 直接用脚本document.formName.submit()提交表单是不会触发表单的onsubmit()事件的 -->
<input type="button" id="bb1" value="onclick_onsubmit" οnclick="document.forms[0].onsubmit()"> <!--会触发fun()函数-->
</form>

 

我们还可以用(attachEvent() / addEventListener() )模拟触发器的方式实现onsubmit效果,语法如下

有时候当某一对象的某一事件被触发时,它所要执行的程序可能是一大串,有可能是要呼叫某一函数,也有可能同时又要呼叫另一函数。 

document.getElementById("btn").onclick = method1; 

document.getElementById("btn").onclick = method2; 

document.getElementById("btn").onclick = method3; 

如果这样写,那么将会只有medhot3被执行 

在IE中使用addachEvent , 

var btn1Obj = document.getElementById("btn1"); 
//object.attachEvent(event,function); 
btn1Obj.attachEvent("onclick",method1); 
btn1Obj.attachEvent("onclick",method2); 
btn1Obj.attachEvent("onclick",method3); 
执行顺序为method3->method2->method1 
Mozilla系列中需要使用 addEventListener 
var btn1Obj = document.getElementById("btn1"); 
//element.addEventListener(type,listener,useCapture); 
btn1Obj.addEventListener("click",method1,false); 
btn1Obj.addEventListener("click",method2,false); 
btn1Obj.addEventListener("click",method3,false); 
执行顺序为method1->method2->method3

看看gmail的代码 

var Ka=navigator.userAgent.toLowerCase(); 
var rt=Ka.indexOf("opera")!=-1; 
var r=Ka.indexOf("msie")!=-1&&(document.all&&!rt); 
function Zl(a,b,c){
if(r){
a.attachEvent("on"+b,c)
}else{
a.addEventListener(b,c,false)
}
}