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处理table表格的代码
Dec 06 Javascript
JavaScript中Function详解
Feb 27 Javascript
Javascript实现网络监测的方法
Jul 31 Javascript
详解基于javascript实现的苹果系统底部菜单
Dec 02 Javascript
浅谈javascript中的数据类型转换
Dec 27 Javascript
Javascript创建类和对象详解
May 31 Javascript
React如何将组件渲染到指定DOM节点详解
Sep 08 Javascript
Mint UI 基于 Vue.js 移动端组件库
Nov 07 Javascript
解决vue 路由变化页面数据不刷新的问题
Mar 13 Javascript
vue2.0路由切换后页面滚动位置不变BUG的解决方法
Mar 14 Javascript
使用async await 封装 axios的方法
Jul 09 Javascript
通过js给网页加上水印背景实例
Jun 17 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 array的学习笔记
2012/05/16 PHP
编写Smarty插件在模板中直接加载数据的详细介绍
2013/06/26 PHP
php使用MySQL保存session会话的方法
2015/06/26 PHP
php使用自定义函数实现汉字分割替换功能示例
2017/01/30 PHP
Yii支持多域名cors原理的实现
2018/12/05 PHP
Aster vs KG BO3 第二场2.19
2021/03/10 DOTA
JavaScript中String.prototype用法实例
2015/05/20 Javascript
jQuery实现图片文字淡入淡出效果
2015/12/21 Javascript
javascript 单例模式详解及简单实例
2017/02/14 Javascript
详解微信小程序 通过控制CSS实现view隐藏与显示
2017/05/24 Javascript
基于zTree树形菜单的使用实例
2017/12/25 Javascript
最适应的vue.js的form提交涉及多种插件【推荐】
2018/08/27 Javascript
element UI upload组件上传附件格式限制方法
2018/09/04 Javascript
webpack打包多页面的方法
2018/11/30 Javascript
vue-router的两种模式的区别
2019/05/30 Javascript
JS运算符简单用法示例
2020/01/19 Javascript
[00:33]2018DOTA2亚洲邀请赛TNC出场
2018/04/04 DOTA
Python修改Excel数据的实例代码
2013/11/01 Python
Python实现的简单万年历例子分享
2014/04/25 Python
两个使用Python脚本操作文件的小示例分享
2015/08/27 Python
python基本语法练习实例
2017/09/19 Python
在Python web中实现验证码图片代码分享
2017/11/09 Python
python使用scrapy发送post请求的坑
2018/09/04 Python
python自动化生成IOS的图标
2018/11/13 Python
Django restframework 源码分析之认证详解
2019/02/22 Python
详解python解压压缩包的五种方法
2019/07/05 Python
使用python爬取抖音视频列表信息
2019/07/15 Python
使用apiDoc实现python接口文档编写
2019/11/19 Python
jupyter notebook 写代码自动补全的实现
2020/11/02 Python
详解anaconda安装步骤
2020/11/23 Python
Django+Django-Celery+Celery的整合实战
2021/01/20 Python
HTML5超炫酷粒子效果的进度条的实现示例
2019/08/23 HTML / CSS
巴西香水和化妆品购物网站:The Beauty Box
2019/09/03 全球购物
大学生如何写自荐信
2014/01/08 职场文书
协商一致解除劳动合同协议书
2014/09/14 职场文书
致运动员加油稿
2015/07/21 职场文书