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)
}
}