📄 ig_edit.js
字号:
/*
Infragistics WebDataInput Script
Version 5.1.20051.37
js-version 1.0.20041.1038
Copyright (c)2003-2005 Infragistics, Inc. All Rights Reserved.
*/
//vs
if(typeof(igedit_all)!="object")
var igedit_all=new Object();
// public: get editor-object using its id
function igedit_getById(id,elem)
{
var o,e=elem,i1=-2;
if(e!=null)
{
while(true)
{
if(e==null)return null;
try{if(e.getAttribute!=null)id=e.getAttribute("editID");}catch(ex){}
if(!ig_csom.isEmpty(id))break;
if(++i1>4)return null;
e=e.parentNode;
}
var ids=id.split(",");
if(ig_csom.isEmpty(ids))return null;
id=ids[0];
i1=(ids.length>1)?parseInt(ids[1]):-1;
}
if((e=igedit_all)!=null)if((o=e[id])==null)for(var i in e)if((o=e[i])!=null)
if(o.ID==id || o.ID_==id || o.uniqueId==id)break; else o=null;
if(o!=null && i1>-2)o.elemID=i1;
return o;
}
// private:
function igedit_init(id,t,prop0,prop1)
{
var o,elem=ig_csom.getElementById("igtxt"+id);
if(elem==null)return;
prop0=prop0.split(",");
if(t>=4)o=igedit_number(elem,id,prop0,prop1);
else if(t==2)o=igedit_date(elem,id,prop0,prop1);
else if(t==1)o=igedit_mask(elem,id,prop0,prop1);
else o=new igedit_new(elem,id,prop0);
igedit_all[id]=o;
o.fix=1;
o.setValue(prop1[0]);
o.fcs=0;
o.fireEvent(10);
}
function igedit_number(elem,id,prop0,prop1)
{
var me=new igedit_new(elem,id,prop0);
var i=1;
var j=-1,v=me.valI(prop1,i++);
if(v.length<1)v=".";
me.decimalSeparator=v;
me.groupSeparator=me.valI(prop1,i++);
v=me.valI(prop1,i++);
if(v.length<1)v="-";
me.minus=v;
me.symbol=me.valI(prop1,i++);
me.nullText=me.valI(prop1,i++);
me.positivePattern=me.valI(prop1,i++);
me.negativePattern=me.valI(prop1,i++);
me.mode=me.valI(prop1,i++);
me.decimals=me.valI(prop1,i++);
me.minDecimals=me.valI(prop1,i++);
v=me.valI(prop1,i++);
if(v==1)me.min=me.valI(prop1,i++);
v=me.valI(prop1,i++);
if(v==1)me.max=me.valI(prop1,i++);
me.clr1=me.valI(prop1,i++);
me.clr0=me.valI(prop1,i++);
me.groups=new Array();
while(++j<6){if((v=me.valI(prop1,i++))>0)me.groups[j]=v; else break;}
//
me.getMaxValue=function(){return this.max;}
me.setMaxValue=function(v){this.max=this.toNum(v,false);}
me.getMinValue=function(){return this.min;}
me.setMinValue=function(v){this.min=this.toNum(v,false);}
//
me.toNum=function(t,limit,fire)
{
var c,num=null,i=-1,div=1,dec=-1,iLen=0;
if(t==null || t.length==null)num=t;
else
{
var neg=false,dot=this.decimalSeparator.charCodeAt(0);
if(t!=null)
{
c=this.symbol;
if(c.length>0)if((iLen=t.indexOf(c))>=0)t=t.substring(0,iLen)+t.substring(iLen+c.length);
if(t.toUpperCase==null)t=t.toString();
iLen=t.length;
}
while(++i<iLen)
{
if(this.isMinus(c=t.charCodeAt(i))){if(neg)break; neg=true;}
if(c==dot){if(dec>=0)break; dec=0;}
if(c<48 || c>57)continue;
if(num==null)num=0;
if(dec<0)num=num*10+c-48;
else{dec=dec*10+c-48; div*=10;}
}
if(num!=null){if(dec>0)num+=dec/div; if(neg)num=-num;}
}
i=limit?this.limits(num):num;
if(fire!=true)return i;
c="";
if(i!=num || (i==null && iLen>0))
{
fire=new Object();
fire.value=i;
fire.text=t;
fire.type=(num==null)?((iLen==0)?2:0):1;
c=String.fromCharCode(30);
c+=t+c+fire.type;
if(this.fireEvent(13,null,fire))c="";
i=fire.value;
}
this.value=i;
t=this.toTxt(i,true,null,"-",".");
this.elemViewState.value=t+c;
this.valid(t);
return i;
}
me.enter0=function(){return this.toTxt(null,true,this.elem.value,"-",".");}
me.focusTxt=function(foc,e)
{
if(e!=null && !foc)this.value=this.toNum(this.elem.value,true,true);
return this.toTxt(this.value,foc);
}
me.toTxt=function(v,foc,t,m,dec)
{
if(t==null)
{
if(v==null)return foc?"":this.nullText;
var neg=(v<0);
if(neg)v=-v;
try{t=v.toFixed(this.decimals);}catch(ex){t=""+v;}
return this.toTxt(neg,foc,t.toUpperCase(),(m==null)?this.minus:m,(dec==null)?this.decimalSeparator:dec);
}
var c,i=-1,iL=t.length;
if(v==null)
{
if(iL==0)return foc?t:this.nullText;
if(v=this.isMinus(t.charCodeAt(0)))t=t.substring(1);
}
var iE=t.indexOf("E");
if(iE<0)iE=0;
else
{
iL=parseInt(t.substring(iE+1));
t=t.substring(0,iE);
iE=iL;
}
iL=t.length;
// find and remove dot
while(++i<iL)
{
c=t.charCodeAt(i);
if(c<48 || c>57){t=t.substring(0,i)+t.substring(i+1); iL--;break;}
}
// if dot,remove trailing 0s
while(i<iL){if(t.charCodeAt(iL-1)!=48)break; t=t.substring(0,--iL);}
if(iE!=0)
{
while(iE-->0)if(i++>=iL)t+="0";
if(++iE<0)
{
if(i==0)t="0"+t;
while(++iE<0)t="0"+t;
t="0"+t;
i=1;
}
}
iL=i;
var iDec=0;
if(this.decimals>0 && iL<t.length)
{
iDec=t.length-iL;
t=t.substring(0,iL)+dec+t.substring(iL);
iL+=dec.length+this.decimals;
}
if(iL<t.length)t=t.substring(0,iL);
if((iL=this.minDecimals)!=0)
{
if(iDec==0)t+=dec;
while(iL-->iDec)t+="0";
}
if(foc)return v?(m+t):t;
var g0=(this.groups.length>0)?this.groups[0]:0;
var ig=0,g=g0;
while(g>0 && --i>0)if(--g==0)
{
t=t.substring(0,i)+this.groupSeparator+t.substring(i);
g=this.groups[++ig];
if(g==null || g<1)g=g0;
else g0=g;
}
var txt=v?this.negativePattern:this.positivePattern;
txt=txt.replace("$",me.symbol);
return txt.replace("n",t);
}
me.setText=function(v){this.setValue(v);}
me.isMinus=function(k){return k==this.minus.charCodeAt(0)|| k==45 || k==40;}
me.doKey=function(k,c,t,i,sel0,sel1,bad)
{
if(bad)
{
if(!(k<9 || this.isMinus(k)|| (k>=48 && k<=57)|| k==this.decimalSeparator.charCodeAt(0)))
ig_cancelEvent(e);
return;
}
if(sel0!=sel1){t=t.substring(0,sel0)+t.substring(sel1); sel1=sel0; i=t.length;}
//7-del,8-back
else if(k==7){if(sel1++>=i || i==0)return;}
else if(k==8){if(sel0--<1)return;}
if(k<9 || this.maxLength==0 || this.maxLength>i)
{
var dot=k==this.decimalSeparator.charCodeAt(0);
var ok=(k>47 && k<58)|| (sel0==0 && this.isMinus(k))|| (dot && this.decimals>0);
if(i>0 && sel0==0)if(this.isMinus(t.charCodeAt(0)))ok=false;
if(k>8 && !ok)return;
if(dot)if((dot=t.indexOf(this.decimalSeparator))>=0)
{
if(dot==sel0 || dot==sel0-1)return;
i--;
if(dot<sel0)sel0=--sel1;
t=t.substring(0,dot)+t.substring(dot+1);
}
if(k>8 && sel1>=i)t+=c;
else t=t.substring(0,sel0)+c+t.substring(sel1);
}
else k=0;
//
this.elem.value=t;
this.select((k>10)?sel1+1:sel0);
}
me.limits=function(v,r)
{
if(v==null && !this.nullable)v=0;
if(v!=null)
{
var n=this.min,x=this.max;
if(n!=null && v<=n)return r?x:n;
if(x!=null && v>=x)return r?n:x;
}
return v;
}
me.getNumber=function(){return this.instant(true,true);}
me.setNumber=function(v){this.setValue(v);}
me.instant=function(num,limit)
{
var v=(this.fcs==2)?this.toNum(this.elem.value,limit==true):this.value;
return (num || this.mode>0)?v:this.toTxt(v,true);
}
me.getValue=function(num){return this.instant(num,true);}
me.setValue=function(v)
{
this.text=this.toTxt(this.value=this.toNum(v,true,true),this.fcs==2);
this.repaint();
this.select(1000);
if(this.fix==1)this.old=this.instant(true);
}
me.spin=function(v)
{
var val=this.toNum(this.elem.value);
if(val==null)val=0;
this.fix=0;
this.setValue(val+v);
this.fix=1;
}
me.getRenderedValue=function(v){return this.toTxt(this.toNum(v),false);}
return me;
}
function igedit_date(elem,id,prop0,prop1)
{
var me=igedit_mask(elem,id,prop0,prop1);
me.mask1=me.dMask(me.valI(prop1,3),true);
me.nullText=me.valI(prop1,4);
me.century=prop1[5];
me.str=me.valI(prop1,6).split(",");
me.getMaxValue=function(){return this.max;}
me.setMaxValue=function(v){if(v!=null && v.getTime==null)v=this.toDate(v.toString(),true); this.max=v;}
me.getMinValue=function(){return this.min;}
me.setMinValue=function(v){if(v!=null && v.getTime==null)v=this.toDate(v.toString(),true); this.min=v;}
me.getAMPM=function(am){var v=this.valI(this.str,am?0:1); return (v.length>0)?v:(am?"AM":"PM");}
me.setAMPM=function(v,am){return this.str[am?0:1]=v;}
me.getMonthNameAt=function(i){return this.valI(this.str,2+i%12);}
me.setMonthNameAt=function(v,i){return this.str[2+i%12]=v;}
me.getDowNameAt=function(i){return this.valI(this.str,14+i%7);}
me.setDowNameAt=function(v,i){return this.str[14+i%7]=v;}
me.setNow=function(){this.setValue(new Date());}
me.date=new Date();
me.isNull=false;
me.d_s=10;
me.setText=function(v){this.setValue(v,true);}
me.fieldValue=function(field,d,e,c)
{
// 1-y,2-yy,3-yyyy
// 4-M,5-MM,6-MMM,7-MMMM
// 8-d,9-dd
//10-h,11-hh,12-H,13-HH
//14-t,15-tt
//16-m,17-mm
//18-s,19-ss
//20-ddd,21-dddd
//22-f,23-ff,24-fff,25=ffff,26-fffff,27-ffffff,28-fffffff
var v,i=(field & 1)*2;
if(field<4){v=d.getFullYear(); if(field==3)i=4; else{v%=100; i=(field==2)?2:0;}}
else if(field<8){this.d_s=2; v=d.getMonth()+1; if(field>5){field=this.getMonthNameAt(v-1); if(field.length>0)return field;}}
else if(field<10)v=d.getDate();
else if(field<16)
{
v=d.getHours();
if(field>13)//ampm
{
v=this.getAMPM(v<12);
if((field-=13)==(i=v.length))return v;
if(i<field)v+=" ";
return v.substring(0,field);
}
if(field<12){v%=12; if(v==0)v=12;}
}
else if(field<18)v=d.getMinutes();
else if(field<20)v=d.getSeconds();
else if(field<22)return this.getDowNameAt(d.getDay());
else
{
v=d.getMilliseconds();
var j=i=field-21;
while(j-->3)v*=10;
while(j++<2)v=Math.floor(v/10);
}
v=""+v;
if(field<20)
{
field=v.length;
if(e){if(i==0)i=2; else e=false;}
if(i>0)
{
if(i<field)v=v.substring(0,i);
else while(field++<i)v=(e?c:"0")+v;
}
}
return v;
}
me.limits=function(d,r)
{
if(d==null)return d;
var v=d.getTime(),n=this.min,x=this.max;
if(n!=null)n=n.getTime(); if(x!=null)x=x.getTime();
if(n!=null && v<=n){d.setTime(r?x:n); return d;}
if(x!=null && v>=x){d.setTime(r?n:x); return d;}
return null;
}
me.toDate=function(t,foc,limit,fire)
{
var fields=(foc && fire)?this.fields0(t):this.fields1(t,foc);
//n: 3-ymd,8-invalid,16-limit,32-lastGood
var v,i0,n=0,i=-1,j=-1,iLen=fields.length;
var c,y=-1,mo=-1,day=-1,h=-1,m=-1,s=-1,ms=-1,pm=-1;
var any=false,arg=new Object();
while(++i<iLen)
{
j++;
v=fields[i];
i0=foc?this.field0IDs[i]:this.field1IDs[i];
if(i0<4){if((arg.year=y=v)>=0){n++; c=this.century; if(v<100){if(i0<3 && c<0)c=29; if(c>=0)y+=(v>c)?1900:2000;}}}
else if(i0<8){arg.month=mo=v; if(v<1 || v>12)n|=8; else n++;}
else if(i0<10){arg.day=day=v; if(v<1 || v>31)n|=8; else n++;}
else if(i0<14)
{
if(v==24)v=0;
if(i0>11)pm=-4; else{if(v==12)v=0; if(v>12)n|=8;}
if((arg.hours=h=v)>23)n|=8;
}
else if(i0<16){j--; if(v>0)pm++; continue;}
else if(i0<18){if((arg.minutes=m=v)>59)n|=8;}
else if(i0<20){if((arg.seconds=s=v)>59)n|=8;}
else if(i0<22){j--; continue;}
else{while(i0++<24)v*=10; while(i0-->25)v=Math.floor(v/10); arg.milliseconds=ms=v;}
if(v>=0)any=true;
else if(j<this.minF)n|=8;
}
if(pm==0 && h>=0 && h<12)arg.hours=(h+=12);
var inv=fire?(":"+y+","+mo+","+day+","+h+","+m+","+s+","+ms+","):"";
var d=null;
if((n & 3)==3){d=new Date(y,mo-1,day); if(y<100)d.setFullYear(y);}
else if(n<8)
{
d=new Date();
d.setTime(this.date.getTime());
if(y>=0)d.setFullYear(y); if(mo>0)d.setMonth(mo-1); if(day>0)d.setDate(day);
}
if(day>0 && d!=null)if(day!=d.getDate())n|=8;
day=this.good;
if(fire && d==null && !this.nullable)
{
d=day;
if(d==null || d.getTime==null){d=new Date(); n|=8;}
else n|=32;
}
if(d!=null)
{
if(h>=0)d.setHours(h); if(m>=0)d.setMinutes(m);
if(s>=0)d.setSeconds(s); if(ms>=0)d.setMilliseconds(ms);
if(limit){if((d=this.limits(i=d))!=null)n=16; else d=i;}
}
if(fire)
{
if(any && d==null && t.length>0 && day!=null && day.getTime!=null){d=day; n=32;}
arg.date=d;
if(n<8 || (n==8 && !any && this.nullable))inv="";
else
{
inv+=(arg.type=(n<16)?2:((n==16)?1:0));
if(this.fireEvent(13,null,arg))inv="";
d=arg.date;
}
this.updatePost(d,inv);
if(day!=false)this.good=d;
}
return d;
}
me.updatePost=function(d,inv)
{
if(d!=null)inv=""+d.getFullYear()+"-"+(d.getMonth()+1)+"-"+d.getDate()+"-"+d.getHours()+"-"+d.getMinutes()+"-"+d.getSeconds()+"-"+d.getMilliseconds()+inv;
this.elemViewState.value=inv;
this.valid((d==null)?"":this.toTxt(d,true,""));
}
me.enter0=function()
{
var d=this.toDate(this.elem.value,true);
return (d==null)?"":this.toTxt(d,true,"");
}
me.toTxt=function(d,foc,prompt,txt)
{
var t="",mask=foc?this.mask:this.mask1;
if(d==null)return foc?this.getTxt(5,prompt,mask):this.nullText;
var ids=foc?this.field0IDs:this.field1IDs;
var c,k,i=-1,f0=0;
this.d_s=6;//seconds
while(++i<mask.length)
{
c=mask.charAt(i);
if((k=mask.charCodeAt(i))<21)
{
t+=this.fieldValue(ids[f0++],d,foc,c);
if(foc)while(i+1<mask.length)if(mask.charCodeAt(i+1)==k)i++; else break;
}
else t+=c;
}
if(!foc)return t;
if(txt)this.txt=t;
return this.getTxt(5,prompt,t);
}
me.focusTxt=function(foc,e,t)
{
var d=null,prompt="";
if(t==null)
{
prompt=this.promptChar;
//key-press
if(e==null && foc)return this.getTxt(5,prompt);
if(e!=null && !foc)
{
//""-from update=lostFocus
d=this.toDate(this.elem.value,e=="",true,true);
if(!(this.isNull=(d==null)))this.date=d;
}
else if(!this.isNull)d=this.date;
}
else d=this.toDate(t,foc,true);
return this.toTxt(d,foc,prompt,e!=null);
}
me.fields1=function(t,foc)
{
var ids=foc?this.field0IDs:this.field1IDs;
var iLen=ids.length;
var j,i=-1,v=-1,field=0,fields=new Array(iLen);
while(++i<iLen)fields[i]=-1;
if(t==null)return fields;
t=t.toUpperCase();
i=-1;
while(++i<t.length && field<iLen)
{
var k=t.charCodeAt(i)-48,j=ids[field];
if(j==20 || j==21)j=ids[++field];//dow
if(j==14 || j==15)//ampm
{
if(k>=0 && k<=9){v=-1; field++; i--; continue;}
if(this.getAMPM(false).charAt(0).toUpperCase()==t.charAt(i))
{fields[field++]=1; v=-1;}
}
else
{
if(k>=0 && k<=9){if(v<0)v=k; else v=v*10+k;}
else
{
if(v>=0){fields[field++]=v; v=-1;}
else if(j==6 || j==7)while(v-->-3)//MMM
{
for(k=0;k<12;k++)
{
var m=this.getMonthNameAt(k).toUpperCase();
if((j=m.length)<1)continue;
if(v==-3){if(j<4)continue; m=m.substring(0,3);}
if((j=t.indexOf(m)-1)>-2)if(j<0 || t.charAt(j).toLowerCase()==t.charAt(j))break;
}
if(k<12){fields[field++]=k+1;break;}
}
}
}
}
if(field<iLen)fields[field]=v;
return fields;
}
me.fields0=function(t)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -