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 相关文章推荐
一个奇葩的最短的 IE 版本判断JS脚本
May 28 Javascript
详解JavaScript中的every()方法
Jun 08 Javascript
深入了解JavaScript的逻辑运算符(与、或)
Dec 20 Javascript
js实现适配不同的屏幕大小
Apr 10 Javascript
基于JavaScript实现选项卡效果
Jul 21 Javascript
angular4 如何在全局设置路由跳转动画的方法
Aug 30 Javascript
基于Vue的SPA动态修改页面title的方法(推荐)
Jan 02 Javascript
npm全局模块卸载及默认安装目录修改方法
May 15 Javascript
详解Node.js amqplib 连接 Rabbit MQ最佳实践
Jan 24 Javascript
深入理解vue中的slot与slot-scope
Apr 22 Javascript
JavaScript面向对象核心知识与概念归纳整理
May 09 Javascript
JavaScript快速调试的两个技巧
Nov 04 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 错误之引号中使用变量
2009/05/04 PHP
php实现批量下载百度云盘文件例子分享
2014/04/10 PHP
详解WordPress中用于合成数组的wp_parse_args()函数
2015/12/18 PHP
项目中应用Redis+Php的场景
2016/05/22 PHP
JavaScript函数参数使用带参数名的方式赋值传入的方法
2015/03/19 Javascript
vue v-model表单控件绑定详解
2017/05/17 Javascript
在vue项目中引入高德地图及其UI组件的方法
2018/09/04 Javascript
微信小程序自定义tabBar组件开发详解
2020/09/24 Javascript
React中使用外部样式的3种方式(小结)
2019/05/28 Javascript
js实现适配移动端的拖动效果
2020/01/13 Javascript
JavaScript判断数据类型有几种方法及区别介绍
2020/09/02 Javascript
使用rst2pdf实现将sphinx生成PDF
2016/06/07 Python
常见python正则用法的简单实例
2016/06/21 Python
python3读取excel文件只提取某些行某些列的值方法
2018/07/10 Python
转换科学计数法的数值字符串为decimal类型的方法
2018/07/16 Python
Python常见排序操作示例【字典、列表、指定元素等】
2018/08/15 Python
python 实现手机自动拨打电话的方法(通话压力测试)
2019/08/08 Python
python GUI库图形界面开发之PyQt5 MDI(多文档窗口)QMidArea详细使用方法与实例
2020/03/05 Python
解决导入django_filters不成功问题No module named 'django_filter'
2020/07/15 Python
Python约瑟夫生者死者小游戏实例讲解
2021/01/04 Python
html5实现输入框fixed定位在屏幕最底部兼容性
2020/07/03 HTML / CSS
Banana Republic英国官网:香蕉共和国,GAP集团旗下偏贵族风
2018/04/24 全球购物
C/C++ 笔试、面试题目大汇总
2015/11/21 面试题
医学检验专业个人求职信范文
2013/12/04 职场文书
冰淇淋店创业计划书范文
2013/12/27 职场文书
美术专业个人自我评价
2014/01/18 职场文书
思想品德课教学反思
2014/02/10 职场文书
年度安全生产目标责任书
2014/07/23 职场文书
幼儿园八一建军节活动方案
2014/08/27 职场文书
竞聘演讲稿怎么写
2014/08/28 职场文书
机关党总支领导班子整改方案
2014/09/20 职场文书
2015年房产经纪人工作总结
2015/05/15 职场文书
三八妇女节主持词
2015/07/04 职场文书
2015迎新晚会活动总结
2015/07/16 职场文书
Python Pycharm虚拟下百度飞浆PaddleX安装报错问题及处理方法(亲测100%有效)
2021/05/24 Python
Navicat Premium自定义 sql 标签的创建方式
2022/09/23 数据库