IE的option标签单击事件无法触发的解决方法
来源:互联网 发布:lamp linux版本 编辑:程序博客网 时间:2024/06/05 20:49
说明:
1、下面使用的代码仅适用于于IE浏览器,测试环境为IE8.
2、下面的代码来自于网络,我做了下闭包的整合
情景说明:
对于这样的一个select标签:
<select id="s"> <option onkeydown="onkeyDown(this)" onkeypress="onkeyPress(o)" onkeyup="onkeyUp(o)" value="文化">文化</option> <option onkeydown="onkeyDown(this)" onkeypress="onkeyPress(o)" onkeyup="onkeyUp(o)" value="科技">科技</option> </select>
当我们选择了“文化”的时候,会触发select的onchange事件,但是如果我们再次选择“文化”,不会有任何的事情发生。
对于大多数的应用场景来说,这样就足够了,但是在某些特殊的情况下,我们想让每次的select控件的选择都产生事件,并且返回被选中的option的value,哪怕这次选中的option和上次选的option是一样的。
所以,综合网上现有的代码,我进行了一下包装,代码不限制使用,完全公开(ps:写的很烂):
function addEventHandle(sID,oFunction) { var o = document.getElementById(sID); if (!o) return; (function() { o.onclick = function() { var evt = window.event; var selectObj = evt ? evt.srcElement : null; // IE Only if (evt && selectObj && evt.offsetY && evt.button != 2 && (evt.offsetY > selectObj.offsetHeight || evt.offsetY < 0)) { // 记录原先的选中项 setTimeout(function() { var option = selectObj.options[selectObj.selectedIndex]; oFunction(option) }, 60); } } } )(); }
使用范例【用于IE8等IE的内核】
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head> <title>测试Option选择事件</title> <script type="text/javascript" src="TableProcess.js"></script> <script language="JavaScript" type="text/javascript"> //传入table标签的id function show(o) { textarea.value = o; } } window.onload = function() { addEventHandle("s",setReq); } function setReq(Obj) { //show(Obj.text); show(CurentTime()); } function addEventHandle(sID,oFunction) { var o = document.getElementById(sID); if (!o) return; (function() { o.onclick = function() { var evt = window.event; var selectObj = evt ? evt.srcElement : null; // IE Only if (evt && selectObj && evt.offsetY && evt.button != 2 && (evt.offsetY > selectObj.offsetHeight || evt.offsetY < 0)) { setTimeout(function() { var option = selectObj.options[selectObj.selectedIndex]; oFunction(option) }, 60); } } } )(); } </script> <style type="text/css"> .style1 { width: 100%; } </style></head><body> <p> <select id="s"> <option value="文化">文化</option> <option value="科技">科技</option> </select> <p id="shows">内容:<input type="text" id="textarea" /></p> </p></body></html>
0 0
- IE的option标签单击事件无法触发的解决方法
- IE的option标签单击事件无法触发的解决方法
- JS触发服务器控件的单击事件
- 单击按钮触发file的click事件
- 024主动触发按钮的单击事件
- 用jQuery的ajax加载的内容无法触发单击事件
- html 标签的触发事件
- 小心IE的按钮单击事件
- IE中Option的disabled无效解决方法
- 让IE的OPTION支持click事件
- HtmlAgilityPack不能解析option标签的解决方法
- 何时触发IE的onBeforeUnload事件
- 关于IE关闭触发的事件
- IE下获取触发事件的目标
- js 关于双击会触发两次单击的解决方法
- 用回车键触发一个按钮的单击事件
- TreeView1鼠标点击节点触发的单击事件
- 解决IE 下div与img重叠无法触发鼠标事件的问题
- EXCEL里趋势线
- 将Excel表格转换成Word文档
- The type javax.servlet.http.HttpServletRequest cannot be resolved. It is indirectly referenced fro
- 第一阶段培训自测题
- Ubuntu 12.10中MyEclipse 10.6+下载+安装+破解
- IE的option标签单击事件无法触发的解决方法
- VB.NET写ORACLE数据库问题
- hdu1404 Digital Deletions SG打表
- Oracle Database Server Messages(四) . . .
- 分手情书 :在清醒的那一刻,我无法选择沉默
- 手机通讯录模拟修改版(前一版本存在一些问题,已修正)
- 润乾——数据库连接问题
- 链表的相交、环问题
- 逻辑运算符