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 相关文章推荐
利用js实现选项卡的特别效果的实例
Mar 03 Javascript
javascript在网页中实现读取剪贴板粘贴截图功能
Jun 07 Javascript
jquery实现可点击伸缩与展开的菜单效果代码
Aug 31 Javascript
JS区分浏览器页面是刷新还是关闭
Apr 17 Javascript
js验证框架实现代码分享
May 18 Javascript
基于JS如何实现类似QQ好友头像hover时显示资料卡的效果(推荐)
Jun 09 Javascript
3kb jQuery代码搞定各种树形选择的实现方法
Jun 10 Javascript
原生js实现焦点轮播图效果
Jan 12 Javascript
bootstrap 下拉多选框进行多选传值问题代码分析
Feb 14 Javascript
详解webpack-dev-server使用方法
Sep 14 Javascript
简单了解TypeScript中如何继承 Error 类
Jun 21 Javascript
axios实现简单文件上传功能
Sep 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
曾在DC漫画界反派角色扮演的演员,谁才是你心目中的小丑之王?
2020/04/09 欧美动漫
php 无限级数据JSON格式及JS解析
2010/07/17 PHP
PHP定时执行计划任务的多种方法小结
2011/12/19 PHP
PHP 获取远程文件大小的3种解决方法
2013/07/11 PHP
怎么在Windows系统中搭建php环境
2013/08/31 PHP
php中$_GET与$_POST过滤sql注入的方法
2014/11/03 PHP
php微信公众号开发模式详解
2016/11/28 PHP
PHP判断密码强度的方法详解
2017/05/26 PHP
PHP微信H5支付开发实例
2018/07/25 PHP
Yii Framework框架使用PHPExcel组件的方法示例
2019/07/24 PHP
js动态在form上插入enctype=multipart/form-data的问题
2012/05/24 Javascript
js获取下拉列表框中的value和text的值示例代码
2014/01/11 Javascript
Jquery 过滤器(first,last,not,even,odd)的使用
2014/01/22 Javascript
Jquery设置attr的disabled属性控制某行显示或者隐藏
2014/09/25 Javascript
jquery实现炫酷的叠加层自动切换特效
2015/02/01 Javascript
JQuery中使文本框获得焦点的方法实例分析
2015/02/28 Javascript
jQuery实现仿腾讯视频列表分页效果的方法
2015/08/07 Javascript
AngularJS 与百度地图的结合实例
2016/10/20 Javascript
jQuery编写设置和获取颜色的插件
2017/01/09 Javascript
实例详解JavaScript中setTimeout函数的执行顺序
2017/07/12 Javascript
微信小程序实现验证码获取倒计时效果
2018/02/08 Javascript
Python使用Socket(Https)Post登录百度的实现代码
2012/05/18 Python
Python实现的多线程端口扫描工具分享
2015/01/21 Python
Python实现希尔排序算法的原理与用法实例分析
2017/11/23 Python
Django实现简单分页功能的方法详解
2017/12/05 Python
django2 快速安装指南分享
2018/01/05 Python
Python简单实现控制电脑的方法
2018/01/22 Python
Python学习_几种存取xls/xlsx文件的方法总结
2018/05/03 Python
终端命令查看TensorFlow版本号及路径的方法
2018/06/13 Python
Desigual英国官网:在线购买原创服装
2018/03/09 全球购物
XMLHttpRequest对象在IE和Firefox中创建方式有没有不同
2016/03/23 面试题
个人委托书范本
2014/09/13 职场文书
2014高三学生考试作弊检讨书
2014/12/14 职场文书
优秀共产党员推荐材料
2014/12/18 职场文书
2016年幼儿园教师政治学习心得体会
2016/01/23 职场文书
Pytest之测试命名规则的使用
2021/04/16 Python