/**
edittable 单击选择插件
caratename:chenxihu
caratetime:214-04-06 21:40:00
email:qqqq2900@126.com
homepage:www.xh829.com
*/
(function ($) {
rockselectdata = {};
function rockselect(cans){
var me = this;
var defv = js.applyIf(cans,{
rand:js.getrand(),
limit:10,
maxheight:400,
num:''
});
for(var i in defv)this[i] = defv[i];
this.init = function(){
if(!this.num)this.num = this.rand;
if(!rockselectdata[this.num])rockselectdata[this.num] = {};
this.showView();
if(rockselectdata[this.num].alldata){
this.loaddatashow(rockselectdata[this.num].alldata);
}else{
this.loaddata();
}
rockselectdata[this.num] = this;
}
this.clickstr = function(act,val){
return 'rockselectdata.'+this.num+'.'+act+'('+val+')';
}
this.showView = function(){
this.hide();
var o2 = $(this.viewobj);
var lefta =o2.offset();
this.top = lefta.top+o2.height();
var s = '
';
s+='
';
s+='
';
s+='
';
$('body').append(s);
}
this.loaddata = function(key){
if(!key)key='';if(!this.url)return;
$.ajax({
type:'get',data:{key:jm.base64encode(key)},
url:this.url,dataType:'json',
success:function(ret){
me.loaddatashow(ret);
},
error:function(){
$('#rockselectdivs').html('加载错误');
}
});
}
this.loaddatashow=function(ret){
this.alldata = ret;
var rows = ret;
if(ret.rows)rows = ret.rows;
if(ret.data)rows = ret.data;
if(this.ondatachuli)rows = this.ondatachuli(rows, ret);
this.yuandata = rows;
this.firstdata(rows);
}
this.pageload=function(zl,p){
$('#rockselectdivpage').remove();
var ds = this.autodata;
var str='',i,len=ds.length,j=0,sty,d,cls,str1='';
for(i=(p-1)*zl;i'+d.name+'';
if(d.subname)str+=' ('+d.subname+')';
str+='';
j++;
if(j>=zl)break;
}
if(len>zl){
str1='总记录'+len+'条('+Math.ceil(len/zl)+'/'+p+')';
if(p>1)str1+=' <上页';
if(j==zl && ds[p*zl])str1+=' 下页>';
str1+='
';
}
if(!str)str='无记录
';
setTimeout(function(){
$('#rockselectdivs').html(str).after(str1);
if(p==1)me.setweizhi();
},10);
}
//点击
this.itemclick = function(i){
var d = this.autodata[i];
if(d.disabled)return;
var nav = d.name;
if(this.nameobj)this.nameobj.value = nav;
var val = d.value;
if(typeof(val)=='undefined')val = d.id;
if(typeof(val)=='undefined')val = d.name;
if(this.idobj)this.idobj.value = val;
if(this.onitemclick)this.onitemclick(nav,val,d);
this.hide();
}
this.keydown = function(o1){
if(!this.yuandata)return;
clearTimeout(this.autoctime);
this.autoctime = setTimeout(function(){me.sousouval(o1);},10);
}
this.sousouval = function(o1){
var ds=[],val= strreplace(o1.value);
var da = this.yuandata,len=da.length,j=0,zl=this.limit;
if(val){
for(i=0;i-1 || (da[i].subname && da[i].subname.indexOf(val)>-1)){
ds.push(da[i]);j++;if(j>=zl*3)break;
}
}else{
ds=da;
}
this.firstdata(ds);
this.nowinpvle= val;
}
this.firstdata = function(ds){
this.autodata = ds;
this.pageload(this.limit,1);
}
this.hide = function(){
$('#rockselectdiv').remove();
}
//设置位置
this.setweizhi = function(){
var obj = $('#rockselectdiv');
var hei = obj.height() + this.top;
var khe = winHb() + $(document).scrollTop();
var dhe = hei - khe,min=200;
if(dhe > 0){
var o2 = $('#rockselectdivs');
var nhei= o2.height()-dhe-5;
if(nhei < min){
var ntop = this.top - (min-nhei);
if(ntop < 0){
min = min + ntop - 5;
ntop = 5;
}
obj.css('top',''+ntop+'px');
nhei = min;
}
o2.css('height',''+nhei+'px');
}
}
this.setSelectData = function(dt,na, fid){
if(!dt || dt.length==0)return;
var o = get('rockselect_select');
o.length = 0;
$(o).show();
dt.unshift({value:'',name:na});
js.setselectdata(o, dt, 'value');
$(o).change(function(){
me.changeselect(this, fid);
});
}
this.changeselect = function(o, fid){
var val = o.value;
var da = this.yuandata,len=da.length,ds=[],i;
if(val){
for(i=0;i