js模拟点击以提交表单为例兼容主流浏览器


Posted in Javascript onNovember 29, 2013

在实际的应用开发中,我们会常常用到JS的模事件,但有时会遇到一些问题,比如说点击事件,举个简单的例子,点击表单外的“提交”按钮来提交表单。上代码吧。

Html:

<h3>请单击“提交”,测试提交按钮的单击事件也被触发了。</h3> 
<button id="btn">提交</button> 
<form action="#" method="get" id="form"> 
<input type="text" name="site" value="www.woiweb.net" readonly/> 
<input id="subbtn" type="submit" value="先别点击此按钮提交" onclick="alert('我已经提交了');"/> 
</form>

Javscript:
<script type="text/javascript"> 
var sub = document.getElementById("subbtn"); 
var btn = document.getElementById("btn"); 
//通用方法 
btn.onclick = function() { 
sub.click(); 
} 
</script>

经过测试,IE,FF,Chrome,Opera,Safari都没有问题,均可正常提交表单。

但在实际的设计中,为了让提交按钮更好看,buildder经常把它们用a标签来处理,加个背景图片来模拟按钮,我们仍然用上面的思路来尝试,增加一个a标签,让它来提交表单,我们仅修改html。

Html:

<h3>请单击“提交”,测试提交按钮的单击事件也被触发了。</h3> 
<button id="btn">提交</button> 
<form action="#" method="get" id="form"> 
<input type="text" name="site" value="www.woiweb.net" readonly/> 
<!--<input id="subbtn" type="submit" value="先别点击此按钮提交" onclick="alert('我已经提交了');"/> --> 
<a id="subbtn" href="javascript:;" onclick="alert('在此调用提交表单的方法')">模拟提交按钮</a> 
</form>

Javascript:
<script type="text/javascript"> 
var sub = document.getElementById("subbtn"); 
var btn = document.getElementById("btn"); 
//通用方法 
btn.onclick = function() { 
sub.click(); 
} 
</script>

运行后,问题出现了,IE、FF、Opera均OK,但Chrome和Safari不能正常运行,后来网上搜索了下,发现a标签并不是和按钮一样有onclick()事件的,解决办法是针对 IE 和 FF编写不同的逻辑,JS代码如下:
javascript:
<script type="text/javascript"> 
var sub = document.getElementById("subbtn"); 
var btn = document.getElementById("btn"); 
//通用方法 
btn.onclick = function() { 
//sub.click(); 
if (/msie/i.test(navigator.userAgent)) //IE 
{ 
sub.fireEvent("onclick"); 
} else { 
var e = document.createEvent('MouseEvent'); 
e.initEvent('click', false, false); 
sub.dispatchEvent(e); 
} 
} 
</script>

至此,问题解决,虽然这个问题很简单,但很容易被大家忽略,贴出来和大家一起分享。

语法:

createEvent(eventType)

参数

 描述

eventType 想获取的 Event 对象的事件模块名。关于有效的事件类型列表,请参阅”说明”部分。

返回值

返回新创建的 Event 对象,具有指定的类型。

抛出

如果实现支持需要的事件类型,该方法将抛出代码为 NOT_SUPPORTED_ERR 的 DOMException 异常。

说明

该方法将创建一种新的事件类型,该类型由参数 eventType 指定。注意,该参数的值不是要创建的事件接口的名称,而是定义那个接口的 DOM 模块的名称。

下表列出了 eventType 的合法值和每个值创建的事件接口:

参数

事件接口

初始化方法
HTMLEvents

HTMLEvent iniEvent()
MouseEvents

MouseEvent iniMouseEvent()
UIEvents

UIEvent

iniUIEvent()

用该方法创建了 Event 对象以后,必须用上表中所示的初始化方法初始化对象。关于初始化方法的详细信息,请参阅 Event 对象参考。

该方法实际上不是由 Document 接口定义的,而是由 DocumentEvent 接口定义的。如果一个实现支持 Event 模块,那么 Document 对象就会实现 DocumentEvent 接口并支持该方法。

Javascript 相关文章推荐
广告切换效果(缓动切换)
May 27 Javascript
让你的博文自动带上缩址的实现代码,方便发到微博客上
Dec 28 Javascript
JavaScript的模块化:封装(闭包),继承(原型) 介绍
Jul 22 Javascript
JavaScript实现列表分页功能特效
May 15 Javascript
AngularJS 指令详细介绍
Jul 27 Javascript
jquery动态添加文本并获取值的方法
Oct 12 Javascript
jquery对象与DOM对象转化
Feb 08 Javascript
JS实现无缝循环marquee滚动效果
May 22 Javascript
想用好React的你必须要知道的一些事情
Jul 24 Javascript
AngularJS集合数据遍历显示的实例
Dec 27 Javascript
微信小程序登录数据解密及状态维持实例详解
May 06 Javascript
jQuery实现简单评论功能
Aug 19 jQuery
JS实现日期加减的方法
Nov 29 #Javascript
js弹出层永远居中实现思路及代码
Nov 29 #Javascript
根据表格中的某一列进行排序的javascript代码
Nov 29 #Javascript
JS取文本框中最小值的简单实例
Nov 29 #Javascript
js中的eventType事件及其浏览器支持性介绍
Nov 29 #Javascript
js简单实现根据身份证号码识别性别年龄生日
Nov 29 #Javascript
JS求平均值的小例子
Nov 29 #Javascript
You might like
PHP3 safe_mode 失效漏洞
2006/10/09 PHP
PHP中鲜为人知的10个函数
2014/02/28 PHP
深入理解PHP中的global
2014/08/19 PHP
php防止站外远程提交表单的方法
2014/10/20 PHP
浅谈PHP的$_SERVER[SERVER_NAME]
2017/02/04 PHP
php模式设计之观察者模式应用实例分析
2019/09/25 PHP
浅谈thinkphp的nginx配置,以及重写隐藏index.php入口文件方法
2019/10/12 PHP
javascript 动态参数判空操作
2008/12/22 Javascript
Jquery Autocomplete 结合asp.net使用要点
2010/10/29 Javascript
js中string转int把String类型转化成int类型
2014/08/13 Javascript
jQuery中parents()和parent()的区别分析
2014/10/28 Javascript
AngularJS ionic手势事件的使用总结
2017/08/09 Javascript
js实现方块上下左右移动效果
2017/08/17 Javascript
layui实现二维码弹窗、并下载到本地的方法
2019/09/25 Javascript
uni-app 支持多端第三方地图定位的方法
2020/01/03 Javascript
聊聊Python中的pypy
2018/01/12 Python
python flask几分钟实现web服务的例子
2019/07/26 Python
Django REST framework 单元测试实例解析
2019/11/07 Python
Python matplotlib实时画图案例
2020/04/23 Python
Python依赖包迁移到断网环境操作
2020/07/13 Python
Python实现区域填充的示例代码
2021/02/03 Python
CSS3媒体查询(Media Queries)介绍
2013/09/12 HTML / CSS
英国创新设计文具、卡片和礼品包装网站:Paperchase
2018/07/14 全球购物
Feelunique德国官方网站:欧洲最大的在线美容零售商
2019/07/20 全球购物
英国最大的割草机购买网站:Just Lawnmowers
2019/11/02 全球购物
室内设计实习自我鉴定
2013/09/25 职场文书
二年级体育教学反思
2014/01/15 职场文书
打架检讨书2000字
2014/02/22 职场文书
体育专业大学生职业生涯规划范文:打造自己的运动帝国
2014/09/12 职场文书
2014个人年度工作总结范文
2014/12/24 职场文书
2015年人力资源工作总结
2015/04/08 职场文书
2016国庆促销广告语
2016/01/28 职场文书
在pyCharm中下载第三方库的方法
2021/04/18 Python
Redis性能监控的实现
2021/07/09 Redis
Python字符串常规操作小结
2022/04/03 Python
python pygame 开发五子棋双人对弈
2022/05/02 Python