首页 > 学习-转载 > HTML标签select 巧妙设置只读

HTML标签select 巧妙设置只读

由于html标签select没有为我们提供readonly属性,disabled属性又不能和后台交互,要真正实现只读效果很难,不过我们可以变通处理一下:看下面的处理

<select name="select"> <option selected="selected" value="1">aaaaa</option> <option value="2">bbbbb</option> <option value="3">ccccc</option></select>

<script>// <![CDATA[
function selectFocus(obj){
var objValue = obj.value;
var objText = obj.options[obj.selectedIndex].text;
obj.options.length = 0;
obj.options.add(new Option( objText,objValue));//动态添加选中项
obj.blur();//妙处是单击时(不是连续单击)下拉框不显示
}
// ]]></script>

//效果如下


上面的处理我想大家都明白了,就是在select获得焦点时,下拉框中只显示选定的数据,原来的都删掉了。当然也可以处理成body的onload时进行处理。大家随意了。如果有其他交互事件时还要允许选择下拉数据,那就事先通过一个数组或对象保存起来select的选项,使用时重新添加上(下面方法展示了多个select处理方式,要求num的值对每个select要唯一)
var selectObjChange=new Array;
var selectObjArray=new Array;
function selectFocus(obj,objValue,num){
if(selectObjArray[num]==null&&selectObjChange[num]==null){
selectObjChange[num]=num;
selectObjArray[num]=obj.options.cloneNode(true);
}
else{
obj.options.length = 0;
for(i=0;i obj.options.add(new Option(selectObjArray[num][i].text,selectObjArray[num][i].value));//动态添加原数据项

}
}
obj.value=objValue;
var objText = obj.options[obj.selectedIndex].text;
obj.options.length = 0;
obj.options.add(new Option(objText,objValue));//动态添加选中项
obj.blur();
}

用心看教程,专心学知识。

原创文章,转载请注明: 转载清水的百宝箱

本文链接地址: HTML标签select 巧妙设置只读

Share
分类: 学习-转载 标签:
  1. 2011年8月5日12:41 | #1

    不错啊,刚好项目中用到,谢了

  1. 本文目前尚无任何 trackbacks 和 pingbacks.