jquery.options.js 返回列表
//select option 控件
$.fn.option=function(options){
var settings = jQuery.extend({
url:null, //json url
data:null, //json data
field:{value:'id',text:'name'}, //数据字段
nofield:false, //为true时则根据数据键值填充
selectedValue:null, //选中值
disabled:false, //是否使控件不可用,默认可用
multiple:false, //是否可以多选
size:1 //控件高度
}, options);
var sel=this;
var optionAdd=function(){
if(settings.data){
if(settings.nofield){
$.each(settings.data,function(i,v){
sel.append('<option value='+i+(i==settings.selectedValue?' selected="selected"':'')+'>'+v+'</option>');
});
}else{
$.each(settings.data,function(i,v){
if(typeof v[settings.field.text]=="undefined") return;
sel.append('<option value='+v[settings.field.value]+(v[settings.field.value]==settings.selectedValue?' selected="selected"':'')+'>'+v[settings.field.text]+'</option>');
});
}
}
};
//控件初始化
if(settings.disabled) sel.attr({disabled:true});
if(settings.multiple){
sel.attr({multiple:settings.multiple,size:settings.size});
}
//控件初始化
if(settings.url){
sel.attr({disabled:true});
$.getJSON(settings.url,function(json){
settings.data=json;
optionAdd();
if(!settings.disabled) sel.removeAttr('disabled');
return sel;
});
}else if(settings.data){
optionAdd();
return sel;
}else if(!!settings.selectedValue){ //仅用于选中option
sel.children('option[value="'+settings.selectedValue+'"]').attr('selected',true);
return sel;
}else if(!!settings.length){ //删除其余option
sel.children().each(function(i){
if(i>(settings.length-1)){
$(this).remove();
}
});
return sel;
}
};
Add New Content