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 Flash插入函数免激活代码
Mar 31 Javascript
提升你网站水平的jQuery插件集合推荐
Apr 19 Javascript
MyEclipse取消验证Js的两种方法
Nov 14 Javascript
jQuery获取当前对象标签名称的方法
Feb 07 Javascript
jQuery判断div随滚动条滚动到一定位置后停止
Apr 02 Javascript
Jquery修改image的src属性,图片不加载问题的解决方法
May 17 Javascript
JS实现下拉菜单列表与登录注册弹窗效果
Aug 10 Javascript
vue src动态加载请求获取图片的方法
Oct 17 Javascript
详解vuex commit保存数据技巧
Dec 25 Javascript
详解vue项目中实现图片裁剪功能
Jun 07 Javascript
vue.js实现左边导航切换右边内容
Oct 21 Javascript
一文秒懂JavaScript构造函数、实例、原型对象以及原型链
Aug 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
PHP 日,周,月点击排行统计
2012/01/11 PHP
PHP 实现页面静态化的几种方法
2017/07/23 PHP
thinkphp3.2实现在线留言提交验证码功能
2017/07/19 PHP
CodeIgniter整合Smarty的方法详解
2017/08/25 PHP
yii2多图上传组件的使用教程
2018/05/10 PHP
thinkPHP5框架导出Excel文件简单操作示例
2018/08/03 PHP
PHP中类与对象功能、用法实例解读
2020/03/27 PHP
深入理解JavaScript中的传值与传引用
2013/12/09 Javascript
js实现同一页面可多次调用的图片幻灯切换效果
2015/02/28 Javascript
javascript实现数独解法
2015/03/14 Javascript
php结合imgareaselect实现图片裁剪
2015/07/05 Javascript
jQuery实现邮箱下拉列表自动补全功能
2016/09/08 Javascript
详解nodejs的express如何自动生成项目框架
2017/07/12 NodeJs
浅谈JavaScript作用域和闭包
2017/09/18 Javascript
javascript设计模式 ? 桥接模式原理与应用实例分析
2020/04/13 Javascript
微信小程序实现多选框功能的实例代码
2020/06/24 Javascript
vue3.0中setup使用(两种用法)
2020/12/02 Vue.js
对于Python的Django框架部署的一些建议
2015/04/09 Python
Python使用bs4获取58同城城市分类的方法
2015/07/08 Python
python3 json数据格式的转换(dumps/loads的使用、dict to str/str to dict、json字符串/字典的相互转换)
2019/04/01 Python
Django缓存系统实现过程解析
2019/08/02 Python
pandas DataFrame的修改方法(值、列、索引)
2019/08/02 Python
python interpolate插值实例
2020/07/06 Python
django models里数据表插入数据id自增操作
2020/07/15 Python
Python将list元素转存为CSV文件的实现
2020/11/16 Python
用python对oracle进行简单性能测试
2020/12/05 Python
使用 css3 实现圆形进度条的示例
2017/07/05 HTML / CSS
YOINS官网:时尚女装网上购物
2017/03/17 全球购物
Cole Haan官方网站:美国时尚潮流品牌
2017/12/06 全球购物
个人自我鉴定怎么写
2013/10/28 职场文书
幼儿师范毕业生自荐信
2013/11/09 职场文书
争先创优演讲稿
2014/09/15 职场文书
女性健康知识讲座通知
2015/04/23 职场文书
教师节获奖感言
2015/07/31 职场文书
大学生党课心得体会
2016/01/07 职场文书
2016年世界艾滋病日宣传活动总结
2016/04/01 职场文书