使option onclick事件支持ie和firefox
2010-10-06 13:35
351 查看
对于select 的onclick事件,ie支持在select中设置onclick事件,在option中设置无效,但是在Firefox中,支持option的 onclick事件,在select中设置无效。另外,如果在onclick中想要得到点击的是哪一个option,是得不到的。为什么呢?因为在点击事件是发生在选择之前的,只有点击之后才能确定哪一个被选中了。所以在这是设置了一个定时函数,在单击之后60ms执行来判断哪个选中。
下面给出了解决办法。
<script type="text/javascript" >
function simOptionClick4IE(){
var evt=window.event ;
var selectObj=evt?evt.srcElement:null;
// IE Only
if (evt && selectObj ) { // 事件存在
// 记录原先的选中项
var oldIdx = selectObj.selectedIndex;
setTimeout(function(){
var option=selectObj.options[selectObj.selectedIndex];
// 此时可以通过判断 oldIdx 是否等于 selectObj.selectedIndex
// 来判断用户是不是点击了同一个选项,进而做不同的处理.
showOptionValue(option)
}, 60);
}
}
function showOptionValue(opt,msg){
var now=new Date();
var dt= (1900+now.getYear())+'-'+(now.getMonth()+1)+'-'+now.getDate()+
' '+now.getHours()+':'+now.getHours()+':'+now.getSeconds()+'.'+now.getMilliseconds();
var resultZone=document.getElementById('reslut');
resultZone.style.margin="10px";
resultZone.innerHTML=dt +" 时,点击了: " + (opt.text + ' = '+opt.value);
}
</script>
<select onclick="simOptionClick4IE()" >
<!-- 下面的 onclick="showOptionValue( this )" 是为 ff 和 opera而准备 -->
<option value="1" onclick="showOptionValue( this )" >aaaaa</option>
<option value="2" onclick="showOptionValue( this )" >bbbbb</option>
<option value="3" onclick="showOptionValue( this )" >ccccc</option>
</select> <div id="reslut" ></div>
下面给出了解决办法。
<script type="text/javascript" >
function simOptionClick4IE(){
var evt=window.event ;
var selectObj=evt?evt.srcElement:null;
// IE Only
if (evt && selectObj ) { // 事件存在
// 记录原先的选中项
var oldIdx = selectObj.selectedIndex;
setTimeout(function(){
var option=selectObj.options[selectObj.selectedIndex];
// 此时可以通过判断 oldIdx 是否等于 selectObj.selectedIndex
// 来判断用户是不是点击了同一个选项,进而做不同的处理.
showOptionValue(option)
}, 60);
}
}
function showOptionValue(opt,msg){
var now=new Date();
var dt= (1900+now.getYear())+'-'+(now.getMonth()+1)+'-'+now.getDate()+
' '+now.getHours()+':'+now.getHours()+':'+now.getSeconds()+'.'+now.getMilliseconds();
var resultZone=document.getElementById('reslut');
resultZone.style.margin="10px";
resultZone.innerHTML=dt +" 时,点击了: " + (opt.text + ' = '+opt.value);
}
</script>
<select onclick="simOptionClick4IE()" >
<!-- 下面的 onclick="showOptionValue( this )" 是为 ff 和 opera而准备 -->
<option value="1" onclick="showOptionValue( this )" >aaaaa</option>
<option value="2" onclick="showOptionValue( this )" >bbbbb</option>
<option value="3" onclick="showOptionValue( this )" >ccccc</option>
</select> <div id="reslut" ></div>
相关文章推荐
- 兼容firefox,ie,谷歌,阻止浏览器冒泡事件,Firefox不支持event解决方法
- javscript 冒泡事件处理方法 支持(IE,firefox)
- javaScript 获得触发事件的元素 支持IE FireFox
- Ajax类,支持事件,容器,多种操作方式,兼容ie,firefox
- 完美Ajax类,支持事件,支持容器,支持多种操作方式,兼容ie,firefox
- IE与FireFox都支持的 onbeforeunload事件(转)
- Ajax类,支持事件,容器,多种操作方式,兼容ie,firefox
- 完美Ajax类,支持事件,支持容器,支持多种操作方式,兼容ie,firefox http://bbs.51js.com/thread-65023-1-1.html
- 支持IE和Firefox的鼠标滚轮事件JavaScript代码
- 图片上传预览(支持ie,firefox)
- js控制文本框内回车事件--IE and FireFox
- CSS透明滤镜最详细说明,完美支持firefox和ie
- js模拟一个回车事件(ie下支持)
- 封装支持FireFox与IE创建XMLHttpRequest方法
- 支持firefox10和IE的上传预览图片js代码
- IE和Firefox的键盘事件
- JS获取跨域IFRAME中的内容,支持FIREFOX和IE
- firefox 和 ie 事件处理的细节,研究,再研究 书写同时兼容ie和ff的事件处理代码
- 让网站变灰的CSS代码(支持IE、FIREFOX和CHROME)
- 让IE的option支持双击/单击事件