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

📄 ig_edit.js

📁 研究怎样通过手写代码来完成自动生成代码
💻 JS
📖 第 1 页 / 共 3 页
字号:
	this.maxLength=this.intI(prop0,i++);
	this.spinDelta=ig_csom.isEmpty(o=this.valI(prop0,i++))?1:parseFloat(o);
	this.spinOnArrows=!ig_csom.isEmpty(prop0[i++]);
	this.spinOnlyOneField=!ig_csom.isEmpty(prop0[i++]);
	this.hideEnter=!ig_csom.isEmpty(prop0[i++]);
	this.selectionOnFocus=this.intI(prop0,i++)-1;
	this.allowAlt=!ig_csom.isEmpty(prop0[i++]);
	this.roll=!ig_csom.isEmpty(prop0[i++]);
	this.css=this.intI(prop0,i++);
	if(this.css>=0)
	{
		this.butP=-1;
		this.butL=1;
		this.buttons=new Array(3);
		for(j=0;j<3;j++)
		{
			if((e=ig_csom.getElementById(id+"_b"+j))==null)i+=4;
			else
			{
				this.initButElem(e);
				e.setAttribute("editID",id+","+j);
				o=new Object();
				o.elem=e;
				o.img=new Array(4);
				//images
				for(ii=0;ii<4;ii++)o.img[ii]=this.valI(prop0,i++);
				o.state=0;
				this.buttons[j]=o;
			}
		}
		ii=1;
		if((o=this.intI(prop0,i++))<0)ii=8;
		else{while(o++<3)ii/=2; while(o-->4)ii*=2;}
		this.spinSpeedUp=ii;
		this.spinOnReadOnly=!ig_csom.isEmpty(prop0[i++]);
		this.spinDelay=this.intI(prop0,i++);
		this.spinFocus=!ig_csom.isEmpty(prop0[i++]);
		this.ccss=new Array(4);
		for(ii=0;ii<4;ii++)
		{
			o=this.valI(prop0,i++);
			if(o.length>0)o=" "+o;
			this.ccss[ii]=o;
		}
	}
	//
	this.repaint=function()
	{
		if(this.elem.value==this.text)return;
		this.elem.value=this.text;
	}
	//
	this.elem=e=ig_csom.getElementById(id+"_t");
	if(igedit_all.submit!=true && e.form!=null)
	{
		ig_csom.addEventListener(e.form,"submit",igedit_event);
		igedit_all.submit=true;
	}
	o=e.parentNode;
	ii=e.offsetHeight;
	if(ii>2)o.height=ii;
	o.removeChild(e);
	//
	ig_csom.addEventListener(e,"keydown",igedit_event);
	ig_csom.addEventListener(e,"keypress",igedit_event);
	ig_csom.addEventListener(e,"keyup",igedit_event);
	ig_csom.addEventListener(e,"focus",igedit_event);
	ig_csom.addEventListener(e,"blur",igedit_event);
	ig_csom.addEventListener(e,"mousedown",igedit_event);
	ig_csom.addEventListener(e,"mouseup",igedit_event);
	ig_csom.addEventListener(e,"mousemove",igedit_event);
	ig_csom.addEventListener(e,"mouseover",igedit_event);
	ig_csom.addEventListener(e,"mouseout",igedit_event);
	//
	o.appendChild(e);
	if(ii!=null && ii>5)
	{
		//server flag
		if(ig_csom.notEmpty(j=elem.style.height))if(j.indexOf("%")<0){j=1; e.style.height=ii;}
		o=this.buttons;
		if(o!=null && o[1]!=null)if((o=o[1].elem)!=null)
		{
			if(j==1){o.style.height=j=Math.ceil(ii/2); this.buttons[2].elem.style.height=ii-j;}
			for(j=0;j<4;j++){o=o.parentNode; if(o.tagName=="TABLE"){o.style.height=ii;break;}}
		}
	}
	//
	this.ID=id;
	if(id.indexOf("x_")==0)this.ID_=id.substring(1);
	e.setAttribute("editID",id);
	if(e.createTextRange!=null)this.tr=e.createTextRange();
	//
	this.k0=this.sel0=0;
	this.getEnabled=function(){return !this.elem.disabled;}
	this.setEnabled=function(v)
	{
		if(this.elem.disabled==!v)return; this.elem.disabled=!v;
		for(var i=0;i<3;i++)this.butState(i,v?0:4);
	}
	this.getVisible=function(){return this.Element.style.display!="none";}
	this.setVisible=function(v,x,y,w,h)
	{
		var d,s0=this.Element,s1=this.elem,hd=this.hd;
		if(!v && this.fcs>0)s1.blur();
		s0.style.display=v?"":"none";
		s0.style.visibility=v?"visible":"hidden";
		if(!v)return;
		if(hd==null)
		{
			hd=s0.offsetHeight; d=s1.offsetHeight;
			if(hd==null || hd<5 || d==null || d<5)hd=0;
			else if((hd-=d)<0)hd=0;
			this.hd=hd;
		}
		s0=s0.style; s1=s1.style;
		if(x!=null){s0.position="absolute"; s0.left=x; s0.top=y;}
		if(w!=null){s0.width=w; s1.width="100%";}
		if(h!=null)
		{
			s0.height=h;
			s1.height=(h-=hd);
			if(this.buttons!=null)
			{
				d=this.buttons[0];
				if(d!=null)if((d=d.elem)!=null)d.style.height=h;
				d=this.buttons[1];
				if(d!=null)if((d=d.elem)!=null)
				{
					try{h-=parseInt(this.Element.cellSpacing);}catch(e){}
					d.style.height=Math.floor(h/2);
					this.buttons[2].elem.style.height=Math.ceil(h/2);
				}
			}
		}
		if(v)this.focus();
	}
	this.getReadOnly=function(){return this.elem.readOnly;}
	this.setReadOnly=function(v){this.elem.readOnly=v;}
	this.getText=function(){return this.elem.value;}
	this.setText=function(v){this.elemValue.value=this.elemViewState.value=this.text=v; this.repaint(); if(this.fix==1)this.old=this.instant(true);}
	this.instant=function(){return this.getText();}
	this.getValue=function(){return this.instant();}
	this.setValue=function(v){this.setText(""+((v==null)?"":v));}
	this.spinF=-1;
	this.spin_=function(v)
	{
		if(this.fireEvent(15,null,v))return;
		var t=this.elem.value;
		this.spin(v);
		if(this.elem.value==t && this.roll && this.min!=null && this.max!=null)
		{
			v=this.sel0;
			this.setValue(this.limits(this.getValue(true),true));
			this.select(v);
		}
		if(this.elem.value!=t)this.fireEvent(12,null);
	}
	this.spin=function(v){}
	//
	this.doKey=function(k,c,t,i,sel0,sel1)
	{
		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)
		{
			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);
	}
	this.doKey0=function(e,a)
	{
		var t0=this.text,t1=this.elem.value;
		var k=e.keyCode;
		if(k==0 || k==null)if((k=e.which)==null)return;
		if(e.ctrlKey || e.altKey)
		{
			if(e.altKey)this.k0=-1;
			else if(t0!=t1)this.paste(t1);
			else if(k==17)this.getSelectedText();//paste
			if(a==0 && (k==38 || k==40))this.doBut(e,a,0);
			return;
		}
		if(this.fcs!=2)return;
		if(a==0)this.k0=k;
		if(a==2){if(this.k0>0)this.k0=0; this.spinF=-1;}
		var i=t1.length,bad=this.bad;
		if(k<=46)
		{
			switch(k)
			{
				case 8: case 46://back//del
					if(this.k0==k && a==1)a=2;
					if(a==0){a=1; if(k==46)k=7;}
					break;
				case 27://esc
					ig_cancelEvent(e); return;
				case 13://enter
					if(this.hideEnter)ig_cancelEvent(e);
					else{this.valid(this.enter0()); this.update();}
					if(this.postEnter){ig_cancelEvent(e); this.doPost(2);}
					return;
				case 38: case 40://up//down
					if(a==0 && this.spinOnArrows && !e.shiftKey)this.spin_((k==38)?this.spinDelta:-this.spinDelta);
					if(this.k0==k)a=2;
					break;
			}
		}
		if(a==1 && k==this.k0 && ((k<48 && k>9 && k!=32)|| k>90))return;
		if(!bad)
		{
			if(a!=0 && k!=9)ig_cancelEvent(e);
			if(a==1 && this.k0==-1){this.k0=0; if(this.allowAlt)this.getSelectedText(); else return;}
			if(a==0 || k<9)this.getSelectedText();
		}
		if(a==1 && k>6)
		{
			if(k>31)
			{
				if(this.fireEvent(1,e,k))
				{
					if(bad)ig_cancelEvent(e);
					return;
				}
				if((a=this.Event)!=null)if((a=a.keyCode)!=null)k=a;
			}
			this.doKey(k,(k<10)?"":String.fromCharCode(k),t1,i,this.sel0,this.sel1,bad);
		}
	}
	this.paste=function(v)
	{
		var m=this.maxLength;
		if(m>0 && m<v.length)v=v.substring(0,m);
		this.text="";
		this.fix=0;
		this.setText(v,this.sel0);//mask
		this.fix=1;
		this.fireEvent(12,null);
	}
	this.spin0=function(b,o)
	{
		var z=0;
		if(o!=null){o.delay=o.spinDelay; ig_csom.edit_o=o; z++; o.spinF=-1; if(o.fcs<1 && o.spinFocus)o.focus();}
		else
		{
			if((o=ig_csom.edit_o)==null)return;
			b=o.buttons!=null && o.buttons[1].state==2;
			if(o.spinSpeedUp>1){if(o.delay>o.spinDelay/o.spinSpeedUp)z=o.delay=Math.ceil(o.delay*6/7);}
			if(o.spinSpeedUp<1){if(o.delay<o.spinDelay/o.spinSpeedUp)z=o.delay=Math.ceil(o.delay*7/6);}
		}
		o.spin_(b?o.spinDelta:-o.spinDelta);
		if(z==0)return;
		if(ig_csom.edit_f!=null)window.clearInterval(ig_csom.edit_f);
		ig_csom.edit_f=window.setInterval(o.spin0,o.delay);
	}
	this.butState=function(b,s)
	{
		var e,i=-1,bb=this.buttons;
		if(bb!=null)bb=bb[b];
		if(bb==null || bb.state==s)return;
		while(i++<3)
			if(i!=b && (e=this.buttons[i])!=null)if(e.state==1 || e.state==2)
				this.butState(i,0);
		if(b>0 && (s==2 || bb.state==2))
		{
			if(ig_csom.edit_f!=null){window.clearInterval(ig_csom.edit_f); ig_csom.edit_f=null;}
			if(s==2)this.spin0(b==1,this);
		}
		bb.state=s;
		if(this.css>0)
		{
			if((i=s)>0)i=((this.css & (1 << (s-1)))==0)?0:s;
			if(bb.elem.className!=(e=this.ID+i+this.ccss[s]))bb.elem.className=e;
		}
		if(ig_csom.isEmpty(i=bb.img[s]))if(ig_csom.isEmpty(i=bb.img[0]))return;
		bb=bb.elem.childNodes;
		for(s=0;s<bb.length;s++)
		{
			e=bb[s];
			b=e.nodeName.toUpperCase();
			if(b=="IMG")if(e.src!=i)e.src=i;
			if(b=="TABLE")if(e.ig_color!=i)this.initButElem(e,ig_color=i);
		}
	}
	this.doBut=function(e,a,but)
	{
		ig_cancelEvent(e);
		if(!this.getEnabled()|| but>2)return;
		if(but==0)
		{
			if(a<=3)
			{
				if(this.fireEvent(14,e))return;
				if(this.Event.needPostBack || (this.postButton && !this.Event.cancelPostBack)){this.doPost(1); return;}
				if(a<3)return;
			}
		}
		else if(this.getReadOnly()&& !this.spinOnReadOnly)return;
		if(a==4)this.butP=-1;
		else if(a!=3 && e.button!=0 && this.butP<0)return;
		var b=this.buttons[but].elem;
		if(a==7)
		{
			//fix for inner elems
			var z,x=0,y=0,w=b.offsetWidth,h=b.offsetHeight;
			if(w!=null)
			{
				while(b!=null){x+=b.offsetLeft; y+=b.offsetTop; b=b.offsetParent;}
				z=1;
				if(e.clientX>x+z && e.clientY>y+z && e.clientX+z<x+w && e.clientY+z<y+h)
					return;
			}
			if(this.butP==0)this.butP=-1;
		}
		b=this.butP;
		if(a==3)
		{
			if(b>=0)this.butState(b,0);
			this.butP=-2;
			if(e.button<2)
			{
				this.butP=but;
				this.butL=e.button;
				this.butState(but,2);
			}
			return;
		}
		if(e.button==0 && b<-1)b=this.butP=-1;
		if(b>=0 && a==5)if(e.button!=this.butL)
		{
			b=this.butP=-1;
			this.butState(but,1);
			return;
		}
		if(b<-1 || (b>=0 && b!=but))return;
		this.butState(but,(a==7)?0:((b>=0)?2:1));
	}
	//enter-key
	this.enter0=function(){return this.elem.value;}
	//update post field and fire change event
	this.update=function(post)
	{
		this.text=this.focusTxt(false,(this.fcs==2 || this.hadFocus)?"":null);//""-still focus
		var v=this.instant(true);
		if(v!=null && this.old!=null)if(v.getTime!=null && v.getTime()==this.old.getTime())
			v=this.old;
		if(v!=this.old)
		{
			if(this.fireEvent(11,null,this.old))
			{
				this.fix=0;
				this.setValue(this.old);
				this.fix=1;
				this.text=this.focusTxt(false,null);
			}
			else
			{
				if(ig_csom.notEmpty(this.clr1))this.elem.style.color=(v!=null && v<0)?this.clr1:this.clr0;
				this.old=v;
				if(post && (this.Event.id!=11 || !this.Event.cancelPostBack))this.doPost(3);
			}
		}
	}
	//process events
	this.doEvt=function(e)
	{
		var v=this.elemID,type=this.eventID(e.type);
		//cut from mask
		if(type==5 && this.fcs==2 && e.button==1)this.getSelectedText();
		if(type!=1)if(this.fireEvent(type,e))if(type<8){ig_cancelEvent(e); return;}
		if(v>=0){this.doBut(e,type,v); return;}
		var val=this.elem.value;
		if(type<3)this.doKey0(e,type);
		else if(type>=8)
		{
			this.spinF=-1;
			var foc=(type==8);
			if(foc==(this.fcs>0))return;
			v=(!this.getReadOnly()&& this.getEnabled())?2:1;
			this.fcs=foc?v:0;
			if(v==1)return;
			this.hadFocus=!foc;
			if(foc)
			{
				if(val!=this.text)// && this.k0<=0)
				{this.getSelectedText(); this.paste(val);}
				this.text=this.focusTxt(foc,e);
			}
			else this.update(this.postValue);
			this.repaint();
			this.select(this.selectionOnFocus*10000);
			this.hadFocus=false;
			return;
		}
		if(val!=this.text)
		{
			if(type>3 && this.k0==0){this.paste(val); return;}
			this.text=val;
			this.fireEvent(12,e);
		}
	}
	//notify listeners and post
	this.fireEvent=function(id,evnt,arg)
	{
		if(id==12)
		{
			if(this.lastText==(arg=this.elem.value))return false;
			this.lastText=this.text=arg;
			if(this.fcs<2)this.update();
		}
		var evt=this.Event;
		if(evt==null)evt=this.Event=new ig_EventObject();
		evt.id=id;
		var i=evt.srcType=this.elemID;
		evt.srcElement=(i<0)?this.elem:this.buttons[i].elem;
		var evts=this.events[id];
		i=(evts==null)?0:evts.length;
		if(i==0)return false;
		var cancel=false,once=true;
		evt.keyCode=null;
		if(arg==null)
		{
			if(id<3){arg=evnt.keyCode; if(arg==0 || arg==null)arg=evnt.which;}
			else arg=this.elem.value;
		}
		while(i-->0)
		{
			if(evts[i]==null)continue;
			if(once){evt.reset(); evt.event=evnt; once=false;}
			evts[i].fRef(this,arg,evt,evts[i].o);
			if(evt.cancel)cancel=true;
		}
		if(evt.needPostBack && id!=14)this.doPost(0);
		return cancel;
	}
	// MS validators
	this.valid=function(v)
	{
		var fire=this.elemValue.value!=v;
		this.elemValue.value=v;
		try
		{
			v=window.event;
			// conditions to get around bugs in WebUIValidation.js plus 2 tricks
			if(fire && this.fcs>=0 && v!=null && v.srcElement==this.elem)
			{this.elem.Validators=this.elemValue.Validators; this.elemValue.onchange();}
		}catch(e){}
	}
	this.select=function(sel0,sel1)
	{
		if(this.fcs!=2 || !this.getVisible())return;
		var e=this.elem;
		var i=e.value.length;
		if(sel1==null){sel1=sel0; if(sel0==null || sel0<0){sel0=0; sel1=i;}}
		if(sel1>=i)sel1=i;
		else if(sel1<sel0)sel1=sel0;
		if(sel0>sel1)sel0=sel1;
		this.sel0=sel0; this.sel1=sel1;
		if(e.selectionStart!=null)
		{e.readOnly=true; e.selectionStart=sel0; e.selectionEnd=sel1; e.readOnly=false;}
		if(this.tr==null)return;
		sel1-=sel0;
		this.tr.move("textedit",-1);
		this.tr.move("character",sel0);
		if(sel1>0)this.tr.moveEnd("character",sel1);
		this.tr.select();
	}
	this.getSelectedText=function()
	{
		var r="";
		this.sel0=this.sel1=0;
		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){this.bad=true; return r;}
		var sel=document.selection.createRange();
		r=sel.duplicate();
		r.move("textedit",-1);
		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;
	}
	this.getSelection=function(start){this.getSelectedText(); return start?this.sel0:this.sel1;}
	this.doPost=function(type)
	{
		if(type!=0 && this.Event!=null && this.Event.cancelPostBack)return;
		if(this.fcs==2)this.update();
		else if(this.fcs==0)try{if(document.activeElement!=null)document.activeElement.fireEvent("onblur"); else window.blur();}catch(ex){}
		try{__doPostBack(this.uniqueId,type);}catch(ex){}
	}
	this.focus=function(){try{this.elem.focus();}catch(e){}}
	this.hasFocus=function(){this.fcs>0;}
}
function igedit_event(e)
{
	if(e==null)if((e=window.event)==null)return;
	var o=e.srcElement;
	if(e.type=="submit")
	{
		for(var i in igedit_all)if((o=igedit_all[i])!=null)if(o.fcs==2)o.update();
		return;
	}
	if(e.type=="unload")ig_dispose(igedit_all);
	if(o==null)if((o=e.target)==null)o=this;
	if((o=igedit_getById(null,o))!=null)if(o.doEvt!=null)o.doEvt(e);
}

⌨️ 快捷键说明

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