123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341 |
- /**
- bootsform
- */
- (function ($) {
-
- function bootstigger(element, options){
- var obj = element;
- var can = options;
- var rand = can.rand;
- var me = this;
-
-
- //初始化
- this.init = function(){
- this.mainidss = 'main_'+rand+'';
- if(can.namedisplay=='')can.namedisplay=''+can.name+'_text';
- var s = '<div class="input-group">';
- s += ' <input readonly class="form-control form-select" name="'+can.namedisplay+'" placeholder="'+can.placeholder+'" id="display_'+rand+'">';
- s += ' <input type="hidden" id="value_'+rand+'" name="'+can.name+'" >';
- s += ' <span class="input-group-btn">';
- if(can.clearbool){
- s += ' <button class="btn btn-default" id="downclear_'+rand+'" type="button"><i class="icon-remove"></i></button>';
- }
- s += ' <button class="btn btn-default" id="down_'+rand+'" type="button"><i class="icon-caret-down"></i></button>';
- s += ' </span>';
- s += '</div>';
-
- var s1 = '<div id="div_'+rand+'" style="position:relative;">'+s+'</div>';
- obj.html(s1);
-
- $('#down_'+rand+'').click(function(){
- me._down(this);
- });
- if(can.clearbool){
- $('#downclear_'+rand+'').click(function(){
- me._downclear(this);
- });
- }
- this.setDefault(can.value, can.data);
- this._loadbool = false;
- this._fistload(0);//自动加载
- };
-
- this._down = function(o1){
- var o = $(o1);//
- if(!get(this.mainidss)){
- var s = '<div >';
- s += '<table width="100%"><tr>';
- s += ' <td><input id="keysou_'+rand+'" style="height:32px;line-height:20px;background:white;border:1px #cccccc solid;margin:5px;padding:3px;width:100%" ></td>';
- s += ' <td><button id="keysoubtn_'+rand+'" style="height:32px;background:white;border:1px #cccccc solid;padding:0px 10px" type="button"><i class="icon-search"></i></button></td>';
- s += ' </tr></table>';
- s += '</div>';
- var w = can.width;
- if(w==0)w = obj.width()-2;
- var s1 = '<div id="'+this.mainidss+'" style="position:absolute;z-index:120;background:white;left:1px;top:33px;padding:0px;width:'+w+'px;border:1px #dddddd solid;box-shadow:0 0 5px rgba(0, 0, 0, 0.3);display:none">';
- s1+=s;
- s1+='<div id="list_'+rand+'" class="select-list" style="overflow-y:auto"></div>';
- s1+='</div>';
- $('#div_'+rand+'').append(s1);
- this._showdata(can.data);
- js.addbody(rand, 'hide', this.mainidss);
- if(!this._loadbool)this._fistload(1);
- $('#keysou_'+rand+'').keyup(function(e){
- me._soukeysss(this, e);
- return false;
- });
- $('#keysoubtn_'+rand+'').click(function(){
- me._soukeybtn(this);
- return false;
- });
- }
- $('#'+this.mainidss+'').toggle();
- if(get(this.mainidss).style.display!='none'){
- get('keysou_'+rand+'').focus();
- this._setselcol();
- this._showeizhi();
- }
- };
-
- this._showdata = function(a){
- var s = '',i,val1,s1,len = a.length;
- this.nowdata = a;
- for(i=0; i<len && i<can.maxlist; i++){
- val1 = a[i][can.valuefields];
- s+= '<div oi="'+i+'" val="'+val1+'" class="div01">';
- if(can.checked){
- s+='<input type="checkbox" val="'+val1+'" name="checkbox_'+rand+'" value="'+i+'"> ';
- }
- s1= can.renderer(a[i], this);
- if(!s1){
- s+= a[i][can.displayfields];
- }else{
- s+= s1;
- }
- s+= '</div>';
- }
- var o = $('#list_'+rand+'');
- o.html(s);
- o.find("div.div01").click(function(){
- me._itemsclick(this);
- });
- if(can.checked){
- o.find("input[type='checkbox']").click(function(){
- me._itemscheckclick(this);
- });
- }
- var h = can.height,h1 = i*can.listheight;
- if(h1>h)h1 = h;
- o.css('height',''+h1+'px');
- this._setselcol();
- };
- this._showeizhi= function(){
- var o,jg,t;
- o = $('#'+this.mainidss+'');
- jg = $('#div_'+rand+'').offset().top+o.height()-winHb()+10;
- t = 33;
- if(jg>0)t = 0-jg;
- o.css('top',''+t+'px');
- };
- this._setselcol= function(){
- var vals = this.getValue(),i,o1,val1;
- var o = $('#list_'+rand+'').find("div[val]");
- o.removeClass();
- o.addClass('div01');
- var o2 = $('#list_'+rand+'').find("input[type='checkbox']");
- o2.attr('checked', false);
- if(vals!=''){
- var a = vals.split(',');
- for(i=0; i<a.length; i++){
- o1 = $('#list_'+rand+'').find("div[val='"+a[i]+"']");
- o1.removeClass();
- o1.addClass('div02');
- }
vals = ','+vals+',';
- for(i=0; i<o2.length; i++){
- o1 = o2[i];
- val1 = $(o1).attr('val');
- if(vals.indexOf(','+val1+',')>-1)o1.checked=true;
- }
- }
- };
- this._cenghide = function(){
- $('#'+this.mainidss+'').hide();
- };
- this._itemsclick = function(o1){
- if(can.checked)return;
- var o = $(o1);
- var oi = parseInt(o.attr('oi'));
- var d = this.nowdata[oi],
- nae = d[can.displayfields],
- val = d[can.valuefields];
- $('#display_'+rand+'').val(nae);
- $('#value_'+rand+'').val(val);
- $('#display_'+rand+'').focus();
- can.itemsclick(d, this, oi);
- this._cenghide();
- };
- this._itemscheckclick = function(o1){
- var s = js.getchecked('checkbox_'+rand+'');
- var nae='',val='',i,s1,d,oi;
- if(s!=''){
- s1 = s.split(',');
- for(i=0;i<s1.length;i++){
- oi = s1[i];
- d = this.nowdata[oi];
- nae+=','+d[can.displayfields];
- val+=','+d[can.valuefields];
- }
- }
- if(nae!=''){
- nae = nae.substr(1);
- val = val.substr(1);
- }
- $('#display_'+rand+'').val(nae);
- $('#value_'+rand+'').val(val);
- this._setselcol();
- };
- //设置默认值
- this.setDefault = function(vs1,a){
- var nae = can.display,
- val = vs1,
- i,d;
- var sval = ','+val+',',vslss,oi=0;
- for(i=0; i<a.length; i++){
- d = a[i];vslss = ','+d[can.valuefields]+',';
- if(sval.indexOf(vslss)>-1){
- if(!can.checked){
- nae = d[can.displayfields];
- break;
- }else{
- if(oi==0)nae='';
- nae+=','+d[can.displayfields];
- oi++;
- }
- }
- }
- if(nae.substr(0,1)==',')nae=nae.substr(1);
- $('#display_'+rand+'').val(nae);
- $('#value_'+rand+'').val(val);
- };
- this.getValue = function(){
- return $('#value_'+rand+'').val();
- };
- this.getRawValue = function(){
- return $('#display_'+rand+'').val();
- };
- this.setValue = function(val){
- this.setDefault(val, can.data);
- };
- this.setRawValue = function(v, v1){
- $('#display_'+rand+'').val(v);
- $('#value_'+rand+'').val(v1);
- };
- this._load = function(url){
- if(isempt(url))return;
- if(get('list_'+rand+'')){
- $('#list_'+rand+'').html('<div align="center" style="padding:20px"><img src="images/mloading.gif"></div>');
- }
- $.post(url,{key:$('#keysou_'+rand+'').val()},function(da){
- var a = js.decode(da);
- me._loadbool = true;
- me._loadback(a);
- });
- };
-
- //搜索
- this._soukeysss = function(o1, e){
- var code = e.keyCode;
- if(code==13){
- this._soukeybtn();
- }else{
- this._soukey();
- }
- //38 39 40 41
- //js.msg('msg',code)
- }
- this._soukey = function(){
- clearTimeout(this._soukeytime);
- this._soukeytime = setTimeout(function(){
- me._soukey1();
- },300);
- };
- this._soukey1 = function(){
- var d=[],i,bo,k,d1,
- val = strreplace($('#keysou_'+rand+'').val()),
- a = can.data;
- if(a.length<=0 || this._oldvalue==val)return;
- if(!isempt(val)){
- val = val.toLowerCase();
- for(i=0; i<a.length; i++){
- if(d.length>10)break;
- d1 = a[i];bo = false;
- for(k in d1){
- if(!isempt(d1[k])){
- if(d1[k].toLowerCase().indexOf(val)==0){
- bo = true;break;
- }};
- }
- if(bo)d.push(d1);
- }
- }else{
- d = a;
- }
- this._showdata(d);
- this._oldvalue = val;
- };
- this._soukeybtn = function(){
- if(can.url==''){
- this._soukey();
- }else{
- this._fistload(1);
- }
- };
-
- this._loadback = function(a){
- this.setData(a);
- };
- this._fistload = function(lx){
- if(!can.autoLoad && lx==0 )return;
- if(can.url=='')return;
- this._load(can.url);
- };
- this._downclear = function(){
- this.setValue('');
- $('#display_'+rand+'').focus();
- };
-
-
- this.reload = function(url){
- if(!url)url = can.url;
- this._load(can.url);
- };
- this.setData = function(a, naf, nafid){
- can.data = a;
- if(get('list_'+rand+'')){
- this._showdata(a);
- this.setValue(this.getValue());
- }
- if(naf)can.displayfields=naf;
- if(nafid)can.valuefields=nafid;
- };
-
- this.setDisabled = function(bo){
- get('down_'+rand+'').disabled = bo;
- get('display_'+rand+'').disabled = bo;
- if(can.clearbool)get('downclear_'+rand+'').disabled = bo;
- };
- this.hide = function(){
- obj.hide();
- };
- this.show = function(){
- obj.show();
- };
- this.setVisible=function(bo){
- if(bo){
- this.show();
- }else{
- this.hide();
- }
- };
- };
-
-
- $.fn.bootstigger = function(options){
- var defaultVal = {
- items:[],rand:js.getrand(),name:'',namedisplay:'',data:[],
- displayfields:'name',valuefields:'name',
- renderer:function(){return ''},listheight:38,
- itemsclick:function(){},height:300,width:0,placeholder:'',
- maxlist:1000,//最多列表数
- checked:false,
- clearbool:false,
- value:'',display:'',
- autoLoad:false,url:'',load:function(){}
- };
- var can = $.extend({}, defaultVal, options);
- clsa = new bootstigger($(this), can);
- clsa.init();
- return clsa;
- };
- })(jQuery);
|