不适用disabled 控制select无法选择,自己写了下面的代码, 通过控制enabled来控制select,当为true的时候,select显示全部选项,当为enabled=false的时候 z只显示被选中的option,其他的删除掉。 使用中,遇到一个很纠结的问题, 我通过使用jquery的clone方法来复制行。参数默认false,没传参数。。 来获取新行,结果当我控制enabled从false到true的时候,在普通的html中没有出现任何问题,而在web项目jsp中,访问的时候 select开始点击一下出现下拉列表,此后,点击无效。不知道是什么问题。请各位了解过的请教下。。 ( 只在ie中出现此问题,其他浏览器都可以)
[img=http://img.bbs.csdn.net/upload/201408/20/1408523027_167819.png][/img]
$(function(){
$("select").die().live({"focus":function(e){
var obj=$(e.target);
var oldval=$("option:selected",obj).val();
$("option",obj).css("display","hidden");
obj.attr("oldValue",oldval);
var opjson=obj.attr("data-json");
if((typeof opjson =='undefined') || opjson==null && opjson==""){
var selIndex=$("option:selected",obj).val();
obj.attr("data-json",optionJson(obj));
obj.attr("selectIndex",selIndex);
obj.css("width",obj.css("width"));
}
var enabled=obj.attr("enabled");
if(enabled=='false'){
$("option[value!='"+oldval+"']",obj).remove();
}else if((typeof enabled =='undefined') || enabled=='true'){
var opjson=obj.attr("data-json");
var selindex=obj.attr("selectIndex");
var objList=eval("("+opjson+")");
if(objList.length>0){
obj.find("option").remove();
for(var j=0;j<objList.length;j++){
if(selindex==objList[j].val){
obj.append("<option value='"+objList[j].val+"' selected>"+objList[j].text+"</option>");
}else{
obj.append("<option value='"+objList[j].val+"'>"+objList[j].text+"</option>");
}
}
}
}
},"change":function(e){
var obj=$(e.target);
var selIndex=$("option:selected",obj).val();
obj.attr("selectIndex",selIndex);
}});
function optionJson(selObj){
var optionList="[";
$("option",selObj).each(function(i,ob){
optionList+="{val:'"+$(ob).val()+"',text:'"+$.trim($(ob).text())+"'},";
});
optionList+="]";
return optionList.replace("},]","}]");
}
});
[img=http://img.bbs.csdn.net/upload/201408/20/1408523027_167819.png][/img]
$(function(){
$("select").die().live({"focus":function(e){
var obj=$(e.target);
var oldval=$("option:selected",obj).val();
$("option",obj).css("display","hidden");
obj.attr("oldValue",oldval);
var opjson=obj.attr("data-json");
if((typeof opjson =='undefined') || opjson==null && opjson==""){
var selIndex=$("option:selected",obj).val();
obj.attr("data-json",optionJson(obj));
obj.attr("selectIndex",selIndex);
obj.css("width",obj.css("width"));
}
var enabled=obj.attr("enabled");
if(enabled=='false'){
$("option[value!='"+oldval+"']",obj).remove();
}else if((typeof enabled =='undefined') || enabled=='true'){
var opjson=obj.attr("data-json");
var selindex=obj.attr("selectIndex");
var objList=eval("("+opjson+")");
if(objList.length>0){
obj.find("option").remove();
for(var j=0;j<objList.length;j++){
if(selindex==objList[j].val){
obj.append("<option value='"+objList[j].val+"' selected>"+objList[j].text+"</option>");
}else{
obj.append("<option value='"+objList[j].val+"'>"+objList[j].text+"</option>");
}
}
}
}
},"change":function(e){
var obj=$(e.target);
var selIndex=$("option:selected",obj).val();
obj.attr("selectIndex",selIndex);
}});
function optionJson(selObj){
var optionList="[";
$("option",selObj).each(function(i,ob){
optionList+="{val:'"+$(ob).val()+"',text:'"+$.trim($(ob).text())+"'},";
});
optionList+="]";
return optionList.replace("},]","}]");
}
});