您的位置:首页 > 运维架构

使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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息