js模拟点击事件实现代码


Posted in Javascript onNovember 06, 2012

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 相关文章推荐
图片格式的JavaScript和CSS速查手册
Aug 20 Javascript
北京奥运官方网站幻灯切换效果flash版打包下载
Jan 30 Javascript
javascript 对象比较实现代码
Apr 27 Javascript
关于onScroll事件在IE6下每次滚动触发三次bug说明
Sep 21 Javascript
jquery select多选框的左右移动 具体实现代码
Jul 03 Javascript
让html页面不缓存js的实现方法
Oct 31 Javascript
基于jQuery实现Ajax验证用户名是否存在实例
Mar 30 Javascript
Angularjs手动解析表达式($parse)
Oct 12 Javascript
详解angularjs中的隔离作用域理解以及绑定策略
May 31 Javascript
微信小程序实现页面下拉刷新和上拉加载功能详解
Dec 03 Javascript
基于JS开发微信网页录音功能的实例代码
Apr 30 Javascript
基于vue+axios+lrz.js微信端图片压缩上传方法
Jun 25 Javascript
js判断变量是否未定义的代码
Mar 28 #Javascript
jquery判断浏览器类型的代码
Nov 05 #Javascript
js实现翻页后保持checkbox选中状态的实现方法
Nov 03 #Javascript
JS事件Event元素(兼容IE,Firefox,Chorme)
Nov 01 #Javascript
js限制textarea每行输入字符串长度的代码
Oct 31 #Javascript
JS TextArea字符串长度限制代码集合
Oct 31 #Javascript
JS 控件事件小结
Oct 31 #Javascript
You might like
PHP大小写问题:函数名和类名不区分,变量名区分
2013/06/17 PHP
hadoop常见错误以及处理方法详解
2013/06/19 PHP
简介PHP的Yii框架中缓存的一些高级用法
2016/03/29 PHP
解决PhpStorm64不能启动的问题
2020/06/20 PHP
IE6下javasc#ipt:void(0) 无效的解决方法
2013/12/23 Javascript
javascript根据时间生成m位随机数最大13位
2014/10/30 Javascript
jquery分割字符串的方法
2015/06/24 Javascript
jquery实现的Accordion折叠面板效果代码
2015/09/02 Javascript
js窗口关闭提示信息(兼容IE和firefox)
2015/10/23 Javascript
基于jquery实现鼠标左右拖动滑块滑动附源码下载
2015/12/23 Javascript
js判断是否为空和typeof的用法(详解)
2016/10/07 Javascript
javascript实现拖拽碰撞检测
2020/03/12 Javascript
JS深入学习之数组对象排序操作示例
2020/05/01 Javascript
对于Python的框架中一些会话程序的管理
2015/04/20 Python
详解python的几种标准输出重定向方式
2016/08/15 Python
pyspark.sql.DataFrame与pandas.DataFrame之间的相互转换实例
2018/08/02 Python
pandas重新生成索引的方法
2018/11/06 Python
pytorch使用Variable实现线性回归
2019/05/21 Python
详解Python 4.0 预计推出的新功能
2019/07/26 Python
Python字符串中添加、插入特定字符的方法
2019/09/10 Python
python matplotlib拟合直线的实现
2019/11/19 Python
什么是python的函数体
2020/06/19 Python
HTML5的表单(绝对特别强大的功能)使用示例
2013/06/20 HTML / CSS
TripAdvisor斯洛伐克:阅读评论、比较价格和酒店预订
2018/04/25 全球购物
城野医生官方海外旗舰店:风靡亚洲毛孔收敛水
2018/04/26 全球购物
西班牙在线宠物食品和配件商店:bitiba
2019/10/11 全球购物
俄罗斯天然和有机产品、健康生活网上商店:Fitomarket.ru
2020/10/09 全球购物
物流管理专业大学生自荐信
2013/10/04 职场文书
党校个人自我鉴定范文
2014/03/28 职场文书
MySQL Shell的介绍以及安装
2021/04/24 MySQL
apache基于端口创建虚拟主机的示例
2021/04/24 Servers
python 下划线的多种应用场景总结
2021/05/12 Python
浅析NIO系列之TCP
2021/06/15 Java/Android
Node.js实现断点续传
2021/06/23 Javascript
MySQL分区路径子分区再分区
2022/04/13 MySQL
Python中使用tkFileDialog实现文件选择、保存和路径选择
2022/05/20 Python