中国第一Ajax站长门户:www.okajax.com   虚拟主机 域名注册 云主机

ie和ff关于form提交的js代码兼容性 - okajax.com - Ajax中国

我要投稿 会员登陆 RSS订阅 本站推荐:
您的位置主页 > 网页设计 > 浏览器研究 > ie和ff关于form提交的js代码兼容性

ie和ff关于form提交的js代码兼容性

2008-07-05    文章来源:互联网    浏览次数:

先描述问题:过去写了一个form,因为作用是上传几张照片,所以必须用form,里面带几个文件选择框。由于上传之前想先在客户端做些判断,譬如提交的是不是图片啊、大小如何啊之类的,所以写了个提交按钮的onclick事件调用的函数,函数里在一堆判断通过后有一句

document.formName.submit();

嗯,这里都还好。调试的时候似乎通过了的,不过后来有好久没关注了,不知道有没有改动。

今天测试,发现问题。ie下一切顺利,ff下无反应。观察:ie下提交,服务端tomcat有对应的提示出来;ff提交没有提示。说明第一不是tomcat的问题,第二没有传到tomcat这里来。然后打开apache的log文件,真tnnd大啊……看样子也没问题啊,最重要的是……似乎ff下也没到apache这里来。

于是可以确认在客户端就给阻止了。看js。在上面那句submit的前面加一个alert(),后面也加个alert(),运行……我顶你个肺啊,居然都出现了。说明ff下js语句仍然执行经过了这个submit,但是没执行,或者执行了没效果。与此同时,ie可以悠哉游哉的正常执行。

然后我跟wc同学反复翻那个ftl文件和js文件,翻来覆去的看,几乎快看出屏幕上每个点了,还是没有头绪。zjb同学适时的出现,然后开始修改,先是改成

document.forms["style_form"].submit(); 

外甥打灯笼。加了一个alert查看是否取到了这个form,外甥继续打灯笼。于是三个人都开始仔细看屏幕的每个点。我说,要不要试试让那个提交的按钮直接提交表单,不经过js的处理了。正要改,zjb说诶你这个按钮的type怎么是submit啊,同时敲打键盘,改成了button。真神奇,外甥的灯笼灭了!

最后探讨结果:一个form的提交按钮,如果按钮的type是submit,那么js函数必须要return true,onclick事件也要写成onclick="return jsFunctionName()"之类的,不加那个return的话ff就不会真的提交表单;如果那个js函数没有返回boolean,那就把按钮的类型改成button吧,可以骗过ff。相比之下ie在这个时候兼容性强一点。

文章评论(查看全部)

看不清楚?单击换一张。
loading.. 评论加载中....
关于我们 - 广告服务 - 版权隐私 - 免责声明 - RSS地图 - 网站地图 - 使用帮助 - 返回顶部