在下拉列表中,一般在select上做响应,可以是onclick点击响应,也或者是onchange改变响应。
有时我们也需要不改变也响应,就需要对option也做点击响应,但是option不支持,需要增加如下代码:
function simOptionClick4IE(){
var evt=window.event ;
//获取事件控件,如果是ie就是element,如果是firefox就是target
var obj = evt.srcElement ? event.srcElement : event.target;
var selectObj=obj;
//offsetX 设置或获取鼠标指针位置相对于触发事件的对象的 x 坐标。 offsetY 设置或获取鼠标指针位置相对于触发事件的对象的 y 坐标。
/* event-button 意思是鼠标按键
0 没按键
1 按左键
2 按右键
3 按左右键
4 按中间键
5 按左键和中间键
6 按右键和中间键
7 按所有的键
*/
//offsetHeight 控件的可见宽度
//意思是 事件发生,选择产生了,点击后鼠标上下移动了 ,不是按鼠标右键 (鼠标上下移动的距离超出这个控件的高度或鼠标向下移动了)
if (evt && selectObj && evt.offsetY && evt.button!=2
&& (evt.offsetY > selectObj.offsetHeight || evt.offsetY<0 ) ) {
// 记录原先的选中项
//返回下拉列表中被选选项的索引号
var oldIdx = selectObj.selectedIndex;
setTimeout(function(){
var option=selectObj.options[selectObj.selectedIndex];
// 此时可以通过判断 oldIdx 是否等于 selectObj.selectedIndex
// 来判断用户是不是点击了同一个选项,进而做不同的处理.
//因为此程序不需要判断和之前的点击内容是否一致,所以不作处理
mychange(option);
}, 60);
}
}