最近在一个项目中做登录模块,使用jQuery validate插件进行表单验证,验证通过后jQuery Form插件ajax提交表单数据,在火狐,谷歌浏览器使用正常,无报错信息,但在IE8下点击登陆按钮没有反应,后来看到IE控制台有报错信息说”对象不支持此属性或方法”.
我这里的报错信息如下:
上网搜了一下有以下几种原因和解决办法,经过测试我的问题是通过方法3解决的,给遇到同样问题的朋友参考一下
1.表单控件中存在name为关键字的情况
由于表单中存在name为submit(或action等其他关键字)的组件,因此提交时没有提交submit而是提交了名字为submit的value。
如以下错误示例:
<form>
<input type="text" name="submit" />
<input type="button" name="submit" value="提交"/>
<input type="submit" name="submit" value="提交"/>
</form>
解决办法:
将name为submit等关键词改名,如Submit(注意貌似只要不是全部小写的就可以)
2.出现表单嵌套。(form中嵌套form)
在页面中本来有个fom,然后又include一个页面,在这个页面中也有一个form,出现了表单嵌套的情况。。
这样在提交时,被包含的form会提交不了。
解决办法:
去掉一个form表单
3.插件引入问题
①检查js路径是否正确;
②注意jquery要放在from.js之前加载;
③尝试替换jquery的版本;
④引入js文件的type
把type="application/javascript"改为type="text/javascript",或者不要type都可以无错运行
报错时是这样的
<script src="http://file.waiting8.com/js/jquery-1.8.3.min.js" language="javascript"></script>
<script src="http://file.waiting8.com/js/jquery.form.js" type="application/javascript" language="javascript"></script>
<script src="http://file.waiting8.com/js/jquery.validate.min.js" type="application/javascript" language="javascript"></script>
改成这样IE8就没问题了
<script src="http://file.waiting8.com/js/jquery-1.8.3.min.js" language="javascript"></script>
<script src="http://file.waiting8.com/js/jquery.form.js" type="text/javascript" language="javascript"></script>
<script src="http://file.waiting8.com/js/jquery.validate.min.js" type="text/javascript" language="javascript"></script>
附加知识:
1、表单应该包含name,aciton,method这三个必须的属性,enctype,id这两个属性可以根据需要加上,表单不要嵌套
2、document.form.action与document.form.submit()一定不要搞混,action是属性,submit是方法,方法不要忘记加上左右括号,这是一般新手经常遇到的问题。