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作用域和作用域链
Oct 21 Javascript
javascript 获取图片尺寸及放大图片
Sep 04 Javascript
js控制href内容的连接内容的变化示例
Apr 30 Javascript
jQuery实现HTML5 placeholder效果实例
Dec 09 Javascript
JQuery实现的购物车功能(可以减少或者添加商品并自动计算价格)
Jan 13 Javascript
DOM基础教程之使用DOM
Jan 19 Javascript
理解javascript定时器中的单线程
Feb 23 Javascript
基于BootStrap Metronic开发框架经验小结【四】Bootstrap图标的提取和利用
May 12 Javascript
JS实现选定指定HTML元素对象中指定文本内容功能示例
Feb 13 Javascript
jQuery实现简易QQ聊天框
Feb 10 jQuery
原生JavaScript实现弹幕组件的示例代码
Oct 12 Javascript
js仿淘宝放大镜效果
Dec 28 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
Mysql中分页查询的两个解决方法比较
2013/05/02 PHP
php中Array2xml类实现数组转化成XML实例
2014/12/08 PHP
PHP编程中的__clone()方法使用详解
2015/11/27 PHP
PHP执行普通shell命令流程解析
2020/08/24 PHP
用cookies实现的可记忆的样式切换效果代码下载
2007/12/24 Javascript
JS拖动技术 关于setCapture使用
2010/12/09 Javascript
jQuery获取样式中颜色值的方法
2015/01/29 Javascript
Jquery Ajax xmlhttp请求成功问题
2015/02/04 Javascript
微信企业号开发之微信考勤Cookies的使用
2015/09/11 Javascript
自定义Angular指令与jQuery实现的Bootstrap风格数据双向绑定的单选与多选下拉框
2015/12/12 Javascript
JQuery实现网页右侧随动广告特效
2016/01/17 Javascript
js获取元素的偏移量offset简单方法(必看)
2017/07/05 Javascript
如何理解Vue的render函数的具体用法
2017/08/30 Javascript
vue数据控制视图源码解析
2018/03/28 Javascript
Vue中使用方法、计算属性或观察者的方法实例详解
2018/10/31 Javascript
JS实现马赛克图片效果完整示例
2019/04/13 Javascript
vue 中 beforeRouteEnter 死循环的问题
2019/04/23 Javascript
Vue之beforeEach非登录不能访问的实现(代码亲测)
2019/07/18 Javascript
vue+elementUi图片上传组件使用详解
2019/08/20 Javascript
[01:08:10]2014 DOTA2国际邀请赛中国区预选赛 SPD-GAMING VS LGD-CDEC
2014/05/22 DOTA
Python设计实现的计算器功能完整实例
2017/08/18 Python
python 生成图形验证码的方法示例
2018/11/11 Python
Django数据库连接丢失问题的解决方法
2018/12/29 Python
Python 串口读写的实现方法
2019/06/12 Python
virtualenv介绍及简明教程
2020/06/23 Python
Python环境搭建过程从安装到Hello World
2021/02/05 Python
html5响应式开发自动计算fontSize的方法
2020/01/13 HTML / CSS
2014年应届大学生毕业自我鉴定
2014/01/31 职场文书
3分钟演讲稿
2014/04/30 职场文书
精神文明单位申报材料
2014/05/02 职场文书
开展批评与自我批评发言材料
2014/10/17 职场文书
公务员群众路线心得体会
2014/11/03 职场文书
社区元宵节活动总结
2015/02/06 职场文书
2015年招商引资工作总结
2015/04/25 职场文书
2015入党自传书范文
2015/06/26 职场文书
Python中的matplotlib绘制百分比堆叠柱状图,并为每一个类别设置不同的填充图案
2022/04/20 Python