⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ig_webdropdown.js

📁 研究怎样通过手写代码来完成自动生成代码
💻 JS
📖 第 1 页 / 共 3 页
字号:
		if(this.elem.selectionStart!=null)
		{
			this.elem.selectionStart=this.sel0=s0;
			this.elem.selectionEnd=this.sel1=s1;
		}
		if(this.tr==null)return;
		this.sel0=s0;this.sel1=s1;
		s1-=s0;
		this.tr.move("textedit",-1);
		this.tr.move("character",s0);
		if(s1>0)this.tr.moveEnd("character",s1);
		this.tr.select();
	}
	this.getSelectedText=function()
	{
		var r="";
		this.sel0=this.sel1=-1;
		if(this.elem.selectionStart!=null)
		{
			if((this.sel0=this.elem.selectionStart)<(this.sel1=this.elem.selectionEnd))
				r=this.elem.value.substring(this.sel0,this.sel1);
			return r;
		}
		if(this.tr==null)return r;
		var sel=document.selection.createRange();
		r=sel.duplicate();
		r.move("textedit",-1);
		this.sel0=0;
		try{while(r.compareEndPoints("StartToStart",sel)<0)
		{
			if(this.sel0++>1000)break;
			r.moveStart("character",1);
		}}catch(ex){}
		r=sel.text;
		this.sel1=this.sel0+r.length;
		return r;
	}
	//date==>>
	// 1-d,2-m,3-y
	// 00007-1st,00070-2nd,00700-3rd,01000-dd,02000-mm,04000-yyyy
	this.order=7370;//2|(1<<3)|(3<<6)|(1<<10)|(1<<11)|(1<<12)
	this.sepCh="/";
	this.sep=47;
	this.autoCentury=true;
	this.setLongFormat=function(v){this.longFormat=v;}
	this.getLongFormat=function(){return this.longFormat;}
	this.getDateInfo=function(){return this.info;}
	this.setDateInfo=function(v)
	{
		this.info=v;
		var sep0=null;
		if(v!=null)
		{
			v=this.info.ShortDatePattern;
			if(ig_csom.isEmpty(sep0=this.info.DateSeparator))sep0=null;
		}
		if(v==null || v.length<3)v="MM/dd/yyyy";
		var ii=v.length;
		var y=0,m=0,d=0,sep=0,i=-1,o=0;
		while(++i<ii)
		{
			var ch=v.charAt(i);
			if(ch=='d')
			{
				if(d++>0){o |= 1024;continue;}
				o |= 1<<(sep++*3);
			}
			else if(ch=='m' || ch=='M')
			{
				if(m++>0){o |= 2048;continue;}
				o |= 2<<(sep++*3);
			}
			else if(ch=='y')
			{
				if(y++>0){if(y>2)o |= 4096;continue;}
				o |= 3<<(sep++*3);
			}
			else if(sep==1 && sep0==null)sep0=ch;
		}
		if(sep0!=null)
		{
			this.sepCh=sep0;
			this.sep=sep0.charCodeAt(0);
		}
		if(m==0)o |= 1<<(sep++*3);
		if(d==0)o |= 2<<(sep++*3);
		if(y==0)o |= 3<<(sep++*3);
		this.order=o;
		this.mask=v;
	}
	this.setGood=function()
	{
		var d=this.date;
		if(d==null)
		{
			if(this.elem.value.length>0)d=this.toDate();
			if(d==null && !this.allowNull)d=new Date();
			this.date=d;
		}
		this.good=d;
	}
	this.focusText=function()
	{
		var v,i=-1,t="",d=this.date;
		if(d==null){if(this.allowNull)return t;this.date=d=new Date();}
		while(++i<3)
		{
			if((v=(this.order >> i*3)& 3)==0)break;
			if(i>0)t+=this.sepCh;
			switch(v)
			{
				case 1:v=d.getDate();if(v<10 && (this.order & 1024)!=0)t+=0;break;
				case 2:v=d.getMonth()+1;if(v<10 && (this.order & 2048)!=0)t+=0;break;
				case 3:v=d.getFullYear();if((this.order & 4096)==0)v%=100;if(v<10)t+=0;break;
			}
			t+=v;
		}
		return t;
	}
	this.setText=function(v){this.setDate(this.toDate(v));}
	this.toDate=function(t,inv)
	{
		if(t==null){if(this.getReadOnly()||this.k0==null)return this.date;t=this.elem.value;}
		var ii=t.length;
		if(ii>12)return this.date;
		if(ii==0 && this.allowNull)return null;
		var y=-1,m=-1,d=-1,sep=0,i=-1,f=0;
		while(++i<=ii)
		{
			var ch=(i<ii)?t.charCodeAt(i):this.sep;
			if(ch==this.sep)
			{
				if(i+1==ii)break;
				switch((this.order >> sep*3)& 3)
				{
					case 1:d=f;break;
					case 2:m=f;break;
					case 3:y=f;break;
				}
				sep++;
			}
			ch-=48;
			if(ch>=0 && ch<=9)f=f*10+ch;
			else f=0;
		}
		f=null;
		i=0;
		this.extra.year=y;this.extra.month=m;this.extra.day=d;this.extra.reason=(ii>0)?2:1;
		if(sep!=3)i++;
		else
		{
			if(d<1 || d>31 || m<1 || m>12 || y<0 || y>9998)i++;
			else
			{
				if(m==2 && d>29)i=d=29;
				if(this.autoCentury){if(y<37)y+=2000;else if(y<100)y+=1900;}
				f=new Date(y,m-1,d);
				if(y<100 && f.setFullYear!=null)f.setFullYear(y);
				if(f.getDate()!=d)
				{
					f=new Date(i=y,m-1,d-1);
					if(y<100 && f.setFullYear!=null)f.setFullYear(y);
				}
				d=f.getTime();
				if((m=this.max)!=null)if(d>m.getTime()){f=m;if(i++==0)this.extra.reason=0;}
				if((m=this.min)!=null)if(d<m.getTime()){f=m;if(i++==0)this.extra.reason=0;}
			}
		}
		this.extra.date=f;
		if(inv && i>0)if(this.fireEvt(11,null))f=this.date;
		return f;
	}
	this.spin=function(v)
	{
		var d=this.toDate();
		if(d==null)d=new Date();
		this.setDate(new Date(d.getFullYear(),d.getMonth(),d.getDate()+v));
	}
	this.isValid=function(){return this.toDate()!=null;}
	this.repaint=function(fire)
	{
		var t=null;
		if(!this.getReadOnly()&& this.getEnabled())
		{
			if(this.foc)t=this.focusText();
			else if(this.changed)
			{
				var d=this.toDate(null,true);
				if(d!=null || this.allowNull)this.date=d;
			}
		}
		this.text=(t==null)?this.staticText():t;
		this.repaint0(fire);
	}
	this.staticText=function()
	{
		if(this.date==null)
		{
			if(this.useLastGoodValue && this.good!=null && this.text.length>0)this.date=this.good;
			else{if(this.allowNull)return this.nullText;this.date=new Date();}
		}
		var t=this.info;
		if(t!=null)t=this.longFormat?t.LongDatePattern:t.ShortDatePattern;
		else if(this.longFormat && this.date.toLocaleDateString!=null)return this.date.toLocaleDateString();
		if(t==null || t.length<2)t=this.mask;
		var f="yyyy",v=this.date.getFullYear();
		if(t.indexOf(f)<0)
		{
			if(t.indexOf(f="yy")<0)v=-1;
			else if((v%=100)<10)v="0"+v;
		}
		if(v!=-1)t=t.replace(f,v);
		f="MMM";
		v=this.date.getMonth()+1;
		var mm=null,dd=null;
		if(t.indexOf(f)<0)
		{
			if(t.indexOf(f="MM")<0){if(t.indexOf(f="M")<0)v=-1;}
			else if(v<10)v="0"+v;
			if(v!=-1)t=t.replace(f,v);
		}
		else
		{
			if(t.indexOf("MMMM")>=0)f="MMMM";
			if(this.info!=null)mm=(f.length==4)?this.info.MonthNames:this.info.AbbreviatedMonthNames;
			if(mm!=null)mm=(mm.length>=v)?mm[v-1]:null;
			t=t.replace(f,(mm==null)?(""+v):"[]");
		}
		f="ddd";
		v="";
		if(t.indexOf(f)>=0)
		{
			if(t.indexOf("dddd")>=0)f="dddd";
			if(this.info!=null)dd=(f.length==4)?this.info.DayNames:this.info.AbbreviatedDayNames;
			v+=this.date.getDay();
			if(dd!=null)dd=(dd.length>=v)?dd[v]:null;
			t=t.replace(f,(dd==null)?v:"()");
		}
		f="dd";
		v=this.date.getDate();
		if(t.indexOf(f)<0){if(t.indexOf(f="d")<0)v=-1;}
		else if(v<10)v="0"+v;
		if(v!=-1)t=t.replace(f,v);
		if(mm!=null)t=t.replace("[]",mm);
		if(dd!=null)t=t.replace("()",dd);
		return t;
	}
	this.getDate=function(){return this.foc?this.toDate():this.date;}
	this.setDate=function(v)
	{
		if(v!=null && v.length!=null)v=(v.length<3)?null:this.toDate(v);
		if(v==null && !this.allowNull)if((v=this.date)==null)v=new Date();
		if(v!=null)
		{
			var m,d=v.getTime();
			if((m=this.max)!=null)if(d>m.getTime())v=m;
			if((m=this.min)!=null)if(d<m.getTime())v=m;
		}
		else this.good=null;
		var fire=this.date!=v;
		this.date=v;
		this.text=this.foc?this.focusText():this.staticText();
		this.repaint0(fire);
	}
	// return char that can be added or -1
	this.canAdd=function(k,t)
	{
		var ii=t.length-1;
		if(ii<0)return (k==this.sep)?-1:k;
		if(t.charCodeAt(ii)==this.sep)
			return (k==this.sep)?-1:k;
		var f=0,sep=0,i=-1,n=0;
		while(++i<=ii)
		{
			var ch=t.charCodeAt(i);
			if(ch==this.sep){if(sep++>1)return -1;n=f=0;continue;}
			n++;
			f=f*10+ch-48;
		}
		if(sep>1 && k==this.sep)return -1;
		i=(this.order >> sep*3)& 3;
		if(i==1){if(n>1 || f*10+k-48>31)n=4;}
		if(i==2){if(n>1 || f*10+k-48>12)n=4;}
		return (n<4)?k:((sep>1)?-1:this.sep);
	}
	this.afterKey=function(k,fix)
	{
		var t=this.elem.value;
		if(fix)
		{
			var sep=0,i=-1,f=0,i0=0,ii=t.length,tt="";
			while(++i<=ii)
			{
				var ch=(i<ii)?t.charCodeAt(i):this.sep;
				if(ch==this.sep)
				{
					switch((this.order>>sep*3)& 3)
					{
						case 1:if(f>31){while(f>31)f=Math.floor(f/10);}else f=-1;break;
						case 2:if(f>12){while(f>12)f=Math.floor(f/10);}else f=-1;break;
						case 3:if(f<9999)f=-1;else while(f>9999)f=Math.floor(f/10);break;
					}
					if(f<0)tt+=t.substring(i0,i);
					else tt+=f;
					if(i<ii)tt+=this.sepCh;
					sep++;
					i0=i+1;
				}
				ch-=48;
				if(ch>=0 && ch<=9)f=f*10+ch;
				else f=0;
			}
			t=tt;
		}
		if(this.k0>0)if(this.canAdd(48,t)==this.sep)t+=this.sepCh;
		this.elem.value=t;
	}
	this.filterKey=function(k,fix)
	{
		if(k!=this.sep && (k<48 || k>57))
			// check for -_\/space.,:;"%
			if(this.tr!=null && this.isSep(k))k=this.sep;
			else return 0;
		if(k==this.sep && this.sel0==0)return 0;
		if(fix && this.canAdd(k,this.elem.value)!=k)k=0;
		return k;
	}
	this.isSep=function(k){return k==this.sep || k==45 || k==92 || k==95 || k==47 || k==32 || k==46 || k==44 || k==58 || k==59;}
	this.paste=function(old)
	{
		var ch,sep=true,v="",f=0;
		for(var i=0;i<old.length;i++)
		{
			ch=old.charCodeAt(i);
			if(ch>=48 && ch<=57)sep=false;
			else{if(!this.isSep(ch))continue;if(f>1)break;if(sep)continue;sep=true;f++;}
			v+=sep?this.sepCh:old.charAt(i);
		}
		this.text="";
		this.setText(v);
	}
	this.setLongFormat(lf);
	this.setDateInfo(di);
	this.setDate(v);
	this.init0=function()
	{
		var e=this.parent.Element,w=this.elem.offsetWidth,img=this.parent.DropButton.Image;
		var w0=e.offsetWidth,wi=img.offsetWidth;
		if(w0==null||w0<5)e.style.width=w0=120;
		if(w==null||w<5){if(wi==null)wi=17;if((w=w0-wi)<5)w=5;}
		this.elem.style.width=w;
		this.k0=-2;
		this.elem.value=this.text;
	}
	igdrp_all[id]=this;
}
function igmask_event(e)
{
	var o,c=null,id=null,i=0;
	if(e==0){for(id in igdrp_all)if((o=igdrp_all[id])!=null)if(o.init0!=null)o.init0();return;}
	if(e==null)if((e=window.event)==null)return;
	if((o=e.srcElement)==null)if((o=e.target)==null)o=this;
	while(true)
	{
		if(o==null || i++>2)return;
		try{if(o.getAttribute!=null)id=o.getAttribute("maskID");}catch(ex){}
		if(!ig_csom.isEmpty(id)){c=igdrp_all[id];break;}
		if((c=o.parentNode)!=null)o=c;
		else o=o.parentElement;
	}
	if(c!=null && c.doEvtM!=null)c.doEvtM(e);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -