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添加String.Format方法
Aug 11 Javascript
基于jquery自定义图片热区效果
Jul 21 Javascript
使用js 设置url参数
Jul 08 Javascript
jquery实现checkbox全选全不选的简单实例
Dec 31 Javascript
基于JavaScript实现购物车功能
Feb 07 Javascript
canvas 绘制圆形时钟
Feb 22 Javascript
jQuery快速高效制作网页交互特效
Feb 24 Javascript
JavaScript使用原型和原型链实现对象继承的方法详解
Apr 05 Javascript
微信小程序图片轮播组件gallery slider使用方法详解
Jan 31 Javascript
详解搭建es6+devServer简单开发环境
Sep 25 Javascript
vue中引入mxGraph的步骤详解
May 17 Javascript
Element-ui 自带的两种远程搜索(模糊查询)用法讲解
Jan 29 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不写闭合标签的好处
2014/03/04 PHP
浅谈PHP调用Webservice思路及源码分享
2014/06/04 PHP
PHP中的use关键字概述
2014/07/23 PHP
浅谈Coreseek、Sphinx-for-chinaese、Sphinx+Scws的区别
2016/12/15 PHP
PHP连接MySQL数据库的三种方式实例分析【mysql、mysqli、pdo】
2019/11/04 PHP
7个Javascript地图脚本整理
2009/10/20 Javascript
学习JavaScript设计模式之观察者模式
2020/04/22 Javascript
jquery实现页面常用的返回顶部效果
2016/03/04 Javascript
基于javascript实现样式清新图片轮播特效
2016/03/30 Javascript
通过修改360抢票的刷新频率和突破8车次限制实现方法
2017/01/04 Javascript
深入理解Commonjs规范及Node模块实现
2017/05/17 Javascript
微信小程序删除处理详解
2017/08/16 Javascript
Vue的百度地图插件尝试使用
2017/09/06 Javascript
JavaScript适配器模式详解
2017/10/19 Javascript
使用 vue.js 构建大型单页应用
2018/02/10 Javascript
ES6中的迭代器、Generator函数及Generator函数的异步操作方法
2019/05/12 Javascript
通过扫小程序码实现网站登陆功能
2019/08/22 Javascript
JavaScript实现简单计算器
2020/03/19 Javascript
vue接通后端api以及部署到服务器操作
2020/08/13 Javascript
[45:34]完美世界DOTA2联赛PWL S3 Rebirth vs CPG 第一场 12.18
2020/12/19 DOTA
python数据类型判断type与isinstance的区别实例解析
2017/10/31 Python
Python调用adb命令实现对多台设备同时进行reboot的方法
2018/10/15 Python
通过实例解析Python调用json模块
2019/12/11 Python
使用python画出逻辑斯蒂映射(logistic map)中的分叉图案例
2020/12/11 Python
java字符串格式化输出实例讲解
2021/01/06 Python
pycharm 实现调试窗口恢复
2021/02/05 Python
澳大利亚儿童和婴儿产品在线商店:Lime Tree Kids
2017/10/05 全球购物
2014年大班元旦活动方案
2014/02/26 职场文书
创新型城市实施方案
2014/03/06 职场文书
5.12护士节演讲稿
2014/04/30 职场文书
打架赔偿协议书范本
2014/10/26 职场文书
上下班时间调整通知
2015/04/23 职场文书
2016高中社会实践心得体会范文
2016/01/14 职场文书
python 使用tkinter与messagebox写界面和弹窗
2022/03/20 Python
threejs太阳光与阴影效果实例代码
2022/04/05 Javascript
python中mongodb包操作数据库
2022/04/19 Python