让人蛋疼的<button>标签,竟然从ie8以上,或者chrome,FF都会自动提交,对于新项目一切好说,你可以改成input type="button",或者在form标签处,加一对属性值:οnsubmit="return false";一切都正常。
蛋疼的事情来了,你要给一个老项目升级,让他兼容目前各种浏览器。好吧。。在代码里,多处都是<button>,一点就会自动提交,咋办呢?那么多界面一个一个去改么?神经了。。
摸索。。。找到方法了。。在全局的js中,加一段代码,
尝试1:
var buttonArray = document.getElementsByTagName("button");
//alert(buttonArray.length);
for(var i=0;i<buttonArray.length;i++){
buttonArray[i].on("click",function(e){
e.preventDefault;
});
}
上面的目的是禁止button的自动提交事件,呵呵,我用的chrome浏览器,不管用。。这个地方应该设计到了ie和其他浏览器对标准不一致的问题。好吧。。扔了
尝试2:
/* if(Ext.query('form')){
Ext.query('form').set({onsubmit:"return false;"});
//document.getElementsByTagName("s:form").setAttribute("onsubmit","return false;");
} */
目的是给<s:form>标签增加一个onsubmit属性,阻止自动提交。。form光秃秃的,id,name均没有。。好吧。。扔了
尝试3:
var target_form = document.forms[0];
target_form.setAttribute("onsubmit","return false;");
这次终于可以了,document.forms用法~~~有时间多熟悉下document 吧。。。setAttribute()方法只有IE支持。。要用这个方法,可能要分ie和chrome写if兼容代码。。
尝试4:
Ext.each(Ext.query("button"),function(item){//button标签的兼容性统一处理
item.setAttribute("type","button");
});
button标签之所以自动提交,是因为它默认的type是“submit”,所以采用ext的方式给每一个button标签加一个type属性,值为“button”.熟练掌握extjs是多么好的一件事儿,慢慢掌握吧~