<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>玩熊的</title>
    <description>新手，J2EE。玩熊（如熊猫、狗熊、鹰熊、熊才、枭熊、奸熊、熊图、熊心等熊）的老手。</description>
    <link>http://shatuo.javaeye.com</link>
    <language>UTF-8</language>
    <copyright>Copyright 2003-2008, JavaEye.com</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>JavaEye - 做最棒的软件开发交流社区</generator>
      <item>
        <title>上一篇中用到的_MonthPicker</title>
        <author>shatuo</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://shatuo.javaeye.com">shatuo</a>&nbsp;
          链接：<a href="http://shatuo.javaeye.com/blog/195946" style="color:red;">http://shatuo.javaeye.com/blog/195946</a>&nbsp;
          发表时间: 2008年05月23日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这个可视化编辑器真是气人，经常将我编辑好的代码弄乱，上传文件也有些问题。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这个选择月的控件是仿照dojo的_Calendar做的，也是一个字，&ldquo;差&rdquo;，是用来拍砖的靶子。</p>
<pre name="code" class="java">if(!dojo._hasResource["bad.form._MonthPicker"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
dojo._hasResource["bad.form._MonthPicker"] = true;
dojo.provide("bad.form._MonthPicker");

dojo.require("dojo.cldr.supplemental");
dojo.require("dojo.date.locale");

dojo.require("dijit._Widget");
dojo.require("dijit._Templated");

dojo.declare(
	"bad.form._MonthPicker",
	[dijit._Widget, dijit._Templated],
	{		
		templateString: "&lt;table cellspacing=\"0\" cellpadding=\"0\" class=\"dijitCalendarContainer\"&gt;\n\t&lt;thead&gt;\n\t\t&lt;tr class=\"dijitReset dijitCalendarMonthContainer\" valign=\"top\"&gt;\n\t\t\t&lt;th class='dijitReset' dojoAttachPoint=\"decrementYear\"&gt;\n\t\t\t\t&lt;span class=\"dijitInline dijitCalendarIncrementControl dijitCalendarDecrease\"&gt;&lt;span dojoAttachPoint=\"decreaseArrowNode\" class=\"dijitA11ySideArrow dijitCalendarIncrementControl dijitCalendarDecreaseInner\"&gt;-&lt;/span&gt;&lt;/span&gt;\n\t\t\t&lt;/th&gt;\n\t\t\t&lt;th class='dijitReset'&gt;\n\t\t\t\t&lt;div dojoAttachPoint=\"yearLabelSpacer\" class=\"dijitCalendarMonthLabelSpacer\"&gt;&lt;/div&gt;\n\t\t\t\t&lt;div dojoAttachPoint=\"yearLabelNode\" class=\"dijitCalendarMonth\"&gt;&lt;/div&gt;\n\t\t\t&lt;/th&gt;\n\t\t\t&lt;th class='dijitReset' dojoAttachPoint=\"incrementYear\"&gt;\n\t\t\t\t&lt;div class=\"dijitInline dijitCalendarIncrementControl dijitCalendarIncrease\"&gt;&lt;span dojoAttachPoint=\"increaseArrowNode\" class=\"dijitA11ySideArrow dijitCalendarIncrementControl dijitCalendarIncreaseInner\"&gt;+&lt;/span&gt;&lt;/div&gt;\n\t\t\t&lt;/th&gt;\n\t\t&lt;/tr&gt;&lt;/thead&gt;\n\t&lt;tbody dojoAttachEvent=\"onclick: _onMonthClick\" class=\"dijitReset dijitMonthPickerContainer\"&gt;\n\t\t&lt;tr class=\"dijitReset dijitCalendarSeasonTemplate\"&gt;\n\t\t\t&lt;td class=\"dijitReset dijitCalendarMonthTemplate\"&gt;&lt;span class=\"dijitPickerMonthLabel\"&gt;&lt;/span&gt;&lt;/td&gt;\n\t\t&lt;/tr&gt;\n\t&lt;/tbody&gt;\n\t&lt;/table&gt;\t\n",	
		
		/**@param:{Date}_MonthPicker的值*/
		value: "",
		
		/**@param: 用来显示的连接符*/
		flag: "",
		
		/**@param: 用来显示的值*/
		displayValue: new Date(),	
		
		
		/** @attr: 显示宽度，默认为wide */
		monthWidth: "wide",
		
		/**@method: 设置用来显示的连接符*/
		setFlag: function(flag)
		{
			this.flag=flag;
		},
		
		/**@method: 设置显示值
		*@param: value需要显示的值
		*/
		setValue: function(/*Date*/ value)
		{
			if(!this.value || dojo.date.compare(value, this.value))
			{				
				value=new Date(value).setDate(10);								
				this.displayYear =new Date(value);				
				this.value=new Date(value);
				//this.value.setHours(0,0,0,0);		
				this.onChange(this.value);
				this._populateGrid();
			}
		},
		
		/** @method: 将日期制转换为显示值
		*@param: 待转换的值
		*@return: 用来显示的值
		*/
		getDisplayValue: function(value)
		{
			var showValue="";
			var yearValue=value.getFullYear();
			var monthValue=value.getMonth();
			showValue=yearValue+this.flag+monthValue;	
			return showValue;
		},		
		
		
		/**@method: 给节点文本赋值
		*@param:{Object}node,{String}text
		*/
		_setText: function(node,text)   
		{			
			while(node.firstChild)
			{
				node.removeChild(node.firstChild);
			}		
			node.appendChild(document.createTextNode(text));
		},

		/** @method: 弹出窗口*/
		_populateGrid: function()
		{
			var year = this.displayYear.getFullYear();	
			
			var today = new Date(new Date(new Date().setDate(10)).setHours(0,0,0,0));
			//为了防止格式化时被补零，特设一个不会被补零的值
			;
			/*月份0表示1月,11表示12月*/
			var monthNum=-1;
				//得到国际化过的月份值
			var monthNames = dojo.date.locale.getNames('months', 'wide', 'standAlone', this.lang);				
			var selected = this.value.setDate(10);
		
			
			/*查找月份节点，进行赋值*/	
			dojo.query(".dijitCalendarMonthTemplate", this.domNode).forEach(function(label, i){						
				var clazz="";	
				monthNum++;		
				var isAddClass=false;
				var date = new Date(year,monthNum,10);										
				//比较是不是现在的月份				
				if(dojo.date.compare(date,today)==0)
				{									
					clazz = "dijitMonthPickCurrentMonth " + clazz;				
					isAddClass=true;
				}
				//比较是不是选择的月份				
				if(dojo.date.compare(date,selected)==0){					
					clazz = "dijitCalendarSelectedMonth " + clazz;					
					isAddClass=true;
				}								
				if(!isAddClass)
				{
					if(dojo.hasClass(label,"dijitMonthPickCurrentMonth"))
					{
						dojo.removeClass(label,"dijitMonthPickCurrentMonth");
					}
					if(dojo.hasClass(label,"dijitCalendarSelectedMonth"))
					{
						dojo.removeClass(label,"dijitCalendarSelectedMonth");
					}
				}
				label.className =  clazz + " dijitCalendarMonthTemplate";			
				label.dijitDateValue = date.valueOf();
				//this._setText(label, monthNames[i]);	
				var template = dojo.query(".dijitPickerMonthLabel", label)[0];
				this._setText(template, monthNames[i]);
			}, this);
			
			/*对年赋值*/					
			var y = year;
			this._setText(this["yearLabelNode"],year);
			var _this = this;
			var typematic = function(nodeProp, dateProp, adj){
				dijit.typematic.addMouseListener(_this[nodeProp], _this, function(count)
				{
					if(count &gt;= 0){	_this._adjustDisplay(dateProp, adj); }
				}, 0.8, 500);
			};
			typematic("incrementYear", "year", 1);
			typematic("decrementYear", "year", -1);
		},
		
		/**@method: 渲染*/
		postCreate: function()
		{
			bad.form._MonthPicker.superclass.postCreate.apply(this);
			var cloneClass = dojo.hitch(this, 
				function(clazz, n)
				{
					var template = dojo.query(clazz, this.domNode)[0];
		 			for(var i=0; i&lt;n; i++)
		 			{
						template.parentNode.appendChild(template.cloneNode(true));
					}
				}
			);
			
			// 克隆3次，让每行变为3列			
			cloneClass(".dijitCalendarMonthTemplate",2);

			// 克隆3次，显示为4季
			cloneClass(".dijitCalendarSeasonTemplate",3 );			
			this.setValue(new Date().setDate(10));				
		},

		/**@method: 修改显示的年份
		*@param: part:变化的部分( 年)  amount: 变化的值
		*/		
		_adjustDisplay: function(/*String*/part, /*int*/amount){	
			this.displayYear = dojo.date.add(this.displayYear, part, amount);			
			this._populateGrid();
		},
		
		/**@event 响应点击月份事件*/
		_onMonthClick: function(/*Event*/evt){			  
			var node = evt.target;
			dojo.stopEvent(evt);
			
			while(!node.dijitDateValue){
				node = node.parentNode;				
			}			
			this.setValue(node.dijitDateValue);	
			this.onValueSelected(this.value);			
		},		
		
		/** @event: 点击弹出窗口触发
		 *  @param: {Date}date
		*/
		onValueSelected: function(/*Date*/date){			
		},
		
		/** @event: 值改变触发事件
		*@param: {Date}date
		*/
		onChange: function(/*Date*/date){
			//console.log("Date change , date is "+date.getFullYear()+"\u5E74"+(date.getMonth()+1)+"\u6708"+ "now" );
		},
		
		/** @method: 是否是个有效的日期
		 *  @param: {Date}dateObject,{String}locale
		 *  @return: false 默认全是有效日期
		 */
		isDisabledDate: function(/*Date*/dateObject, /*String?*/locale){			
			return false; 
		}
	}
);
}
</pre>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://shatuo.javaeye.com/blog/195946#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/115' target='_blank'><span style="color:red;font-weight:bold;">JavaEye图灵杯第2届问答大赛开始了！8月4日至8月17日，奖品丰厚！</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 23 May 2008 11:13:32 +0800</pubDate>
        <link>http://shatuo.javaeye.com/blog/195946</link>
        <guid>http://shatuo.javaeye.com/blog/195946</guid>
      </item>
      <item>
        <title>改造dojo 日期控件</title>
        <author>shatuo</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://shatuo.javaeye.com">shatuo</a>&nbsp;
          链接：<a href="http://shatuo.javaeye.com/blog/195926" style="color:red;">http://shatuo.javaeye.com/blog/195926</a>&nbsp;
          发表时间: 2008年05月23日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <pre name="code" class="js">if (!dojo._hasResource["bad.form.DateBox"]) { //_hasResource checks added by build. Do not use _hasResource directly in your code.
    dojo._hasResource["bad.form.DateBox"] = true;
    dojo.provide("bad.form.DateBox");    
    
    dojo.require("dijit._Calendar");
    dojo.require("dijit.form.TimeTextBox");
    dojo.require("bad.form._MonthPicker");   
    dojo.require("dojo.date.locale");     
    
    dojo.declare("bad.form.DateBox", [dijit.form.TimeTextBox], {
        /** @attr: 弹出窗口类型  */
        _popupClass: "dijit._Calendar",
        
        /** @attr: {String}日期类型 
        * @example yyyy_MM_dd   其中MM要大写        
        */
        datePattern: "",
        
        /** {String } */
		_pattern: "",
				        
        /**@attr: 年的开始位*/
        _yearStart:"",
        
		/**@attr: 年的结束位*/
        _yearEnd:"",
        
        /**@attr: 月的开始位*/
        _monthStart:"",
        
        /**@attr: 月的结束位*/
        _monthEnd:"",
        
        /**@attr: 日的开始位*/
        _dateStart:"",
        
        /**@attr: 日的结束位*/
        _dateEnd:"",
        
        /**@attr: 存储用户提示信息*/
        _currentMessage: "请输入正确的日期",
        
        /**@attr: {Boolean} 是否显示day 为{false}时不显示，为{true}时显示  */
        showDay: "",        
        
        
        /**@attr: 日期可以显示的初始值*/
		firstValue:'', 	
		
       
        /**@method将目前this.textbox.value进行格式化*/
        formatInput: function()
        {       	    		
	        var value=this.getFormatDate();
	        if(value instanceof Date)  
	        {  	
	            this.setValue(value);  	            
        	}
        }, 
        
        /**   当文本框失去焦点事件*/
        _runBlur: function()
        {        	
        	this.formatInput(); 
        	this.onChange(this.textbox.value);       	
        },
        
        /** @method: 将参数或者目前显示的数字格式化，如果显示中数字位数超过6且显示天数，则将字符截取为yyyy（M）M（d）d 		 
        * @return: {Date} 
        * @remind: 可以自己添加返回值，比如判断现有的值无法转化，返回false，等等。
         */
        getFormatDate: function(value)
    	{    		
    		if(!value)
    		{
            	value = this.textbox.value;
    		}           
            if (typeof value == "string") 
            {
                var numValue = "";
                value.replace("-", "");
                var stringArray = value.split("");                
                //取得value中的数字			
                for (var i = 0; (i &lt; stringArray.length &amp;&amp; (this.showDay ? numValue.length &lt; 8 : numValue.length &lt; 6)); i++) {                   
                    if (!isNaN(stringArray[i])) {
                        numValue += stringArray[i];
                    }
                }
                //如果显示day                
                if (this.showDay) {                	
                    if (numValue.length == 8) 
                    { 	
                        return new Date(numValue.slice(this._yearStart, this._yearEnd), numValue.slice(this._monthStart, this._monthEnd) - 1, numValue.slice(this._dateStart, this._dateEnd));
                    }
                    if (numValue.length == 7)
                    {
                        return new Date(numValue.slice(this._yearStart, this._yearEnd), numValue.slice(this._monthStart, this._monthEnd-1) - 1, numValue.slice(this._dateStart-1, this._dateEnd));
                    }
                    if (numValue.length == 6) 
                    {
                        return new Date(numValue.slice(this._yearStart, this._yearEnd), numValue.slice(this._monthStart,this._monthEnd-1) - 1, numValue.slice(this._dateStart-1, this._dateEnd-1));
                    }
                } else {
                    if (numValue.length == 6) {
                        return new Date(numValue.slice(this._yearStart, this._yearEnd), numValue.slice(this._monthStart, this._monthEnd) - 1);
                    }
                    if (numValue.length == 5) {
                        return new Date(numValue.slice(this._yearStart, this._yearEnd), numValue.slice(this._monthStart,this._monthEnd-1) - 1);
                    }
                }                
            }              		
    	},    
               
        
        /**@member: 扫描datePattern，获得年月(日)的位置*/
        scanPattern: function()
        {        
        	this._pattern="";        	
        	for(var i=0;i&lt;this.datePattern.length;i++)
        	{
        		switch(this.datePattern.charAt(i))
        		{
        			case 'd':        						
        						while(this.datePattern.charAt(i)=='d')
        						{        							
        							this._pattern+='d';
        							i++;
        						}      
        						i--;  					
        						break;
        			case 'D':        						
        						while(this.datePattern.charAt(i)=='D')
        						{        							
        							this._pattern+='d';
        							i++;
        						}      
        						i--;  					
        						break;
        			case 'M':        						
        						while(this.datePattern.charAt(i)=='M')
        						{        							
        							this._pattern+='M';
        							i++;
        						}    
        						i--;    						
        						break;
        			
        			case 'y':        						
        						while(this.datePattern.charAt(i)=='y')
        						{        							
        							this._pattern+='y';
        							i++;
        						}     
        						i--;   						
        						break;
        			case 'Y':        						
        						while(this.datePattern.charAt(i)=='Y')
        						{        							
        							this._pattern+='y';
        							i++;
        						}     
        						i--;   						
        						break;
        			default :  break;          //暂时不进行处理
        		}
        	}  
        	for(var i=0;i&lt;this._pattern.length;i++)
        	{
        		switch(this._pattern.charAt(i))
        		{
        			case 'd':
        						this._dateStart=i;
        						while(this._pattern.charAt(i)=='d')
        						{
        							i++;        							
        						}
        						this._dateEnd=i;
        						i--;        						
        						break;
        			case 'M':
        						this._monthStart=i;
        						while(this._pattern.charAt(i)=='M')
        						{
        							i++;        							
        						}
        						this._monthEnd=i;
        						i--;        						
        						break;
        			
        			case 'y':
        						this._yearStart=i;
        						while(this._pattern.charAt(i)=='y')
        						{
        							i++;        						
        						}
        						this._yearEnd=i;
        						i--;        						
        						break;
        			default :  break;          //暂时不进行处理
        		}
        	}  
        	console.log(this.datePattern+"  "+this._yearStart+"  "+this._yearEnd+"  "+this._monthStart+"  "+this._monthEnd+"  "+this._dateStart+"  "+this._dateEnd);      	
        },
        
        
        _setPattern: function()
        {
        	/*
        	this._pattern="";            	
            var size=this._yearEnd&gt;this._monthEnd?(this._yearEnd&gt;this._dateEnd? this._yearEnd:this._dateEnd):(this._monthEnd&gt;this.dateEnd? this._monthEnd:this._dateEnd);
            console.log("length is "+size);
            for(var i=0;i&lt;size;i++)
            {
            	if(i&gt;=this._yearStart&amp;&amp;i&lt;this._yearEnd)
            	{
            		while(i&lt;this._yearEnd)
            		{
            			this._pattern+="y";
            			i++;
            		}
            		i--;
            	}
            	else	
            	if(i&gt;=this._monthStart&amp;&amp;i&lt;this._monthEnd)
            	{
            		while(i&lt;this._monthEnd)
            		{
            			this._pattern+="M";
            			i++;
            		}
            		i--;
            	}
            	else
            	if(i&gt;=this._dateStart&amp;&amp;i&lt;this._dateEnd)
            	{
            		while(i&lt;this._dateEnd)
            		{
            			this._pattern+="d";
            			i++;
            		}
            		i--;
            	}            	
            }
            */
            console.log("pattern is "+this._pattern);
        },
        
        /**被绑定的onkeydown事件，火狐下回车事件有问题         
         * */
        _onkeydown: function(key)
        {
        	var c = String.fromCharCode(65);
        	var code=this._getKeyCode(key);
        	if(code==13)
        	{
        		var value=this.getFormatDate();
        		if(value instanceof Date)
                {
                	var isie = (document.all) ? true : false;
					var eSrc =isie?key.srcElement:key.target;
					if(eSrc.tagName=="INPUT" &amp;&amp; (eSrc.type=="text"||eSrc.type=="password"))
					{
						if(isie)
						{
							key.keyCode=9;
						}
						else
						{
							key.which=9;
						}	
						if(this._opened)
						{					
							this._close();
						}
					}
                }
        	}
        	return true;
        },
        
        _getKeyCode: function(e){
            var isie = (document.all) ? true : false;
            var key="";
            if (isie) 
            {
                key = e.keyCode;
            }
            else
            {
                key = e.which;                
                if (key == 120 || key == 228||key == 99 ||key == 0)
                {
                    key = 8;
                }
            }
            return key;
        },
        
        /** @method: 过滤字符加捕获回车*/
        keycodefilter: function(key){
            if (key.keyCode == dojo.keys.ENTER) 
            {
                this.formatInput();      
                this.onChange();          
            }
            if(key.keyCode==dojo.keys.ESCAPE)         
    		{
    			if(this._opened)
    			{
    				this._close();
    			}	
    		}   		  
         },       
      
       
        /** @method: 验证，目前继承父类的验证方法*/
        validate: function(){
            this.inherited('validate', arguments);
        },      
        
        
        /**  @method: 配置属性，继承父类的同名方法，目前主要是完成 this.datePattern默认配置将其配置为"yyyy-MM-dd"
         */          
        postMixInProperties: function()
        {        	
            this.inherited('postMixInProperties', arguments);
            this.constraints.selector = 'date';                                
            this.datePattern=this.datePattern? this.datePattern:"yyyy-MM-dd";               
            this.showDay = (this.datePattern.indexOf("dd") != -1 || this.datePattern.indexOf("DD") != -1) ? true : false;     //是否显示day   
            this.constraints.datePattern = this.datePattern;
            if(!this.showDay)
            {
            	this._popupClass="bad.form._MonthPicker";
            }
            this.maxLength=this.datePattern.length;   //输入长度不能超过验证长度    
            this.promptMessage="请输入形如"+this.datePattern;
			this.invalidMessage="请输入形如"+this.datePattern;               
        },        
        
        /** @method: 继承父类同名方法，扫描格式，添加两个事件绑定，一个是键盘输入字符过滤，另一个是失去焦点对字符串进行格式化 如果有初值赋上初值*/
        postCreate: function(){
            this.inherited('postCreate', arguments);          
            this.scanPattern();   
            this._setPattern();     
            dojo.connect(this.textbox, "onkeypress", this, this.keycodefilter); //绑定onkeypress事件        
			dojo.connect(this.textbox,"onkeydown",this,this._onkeydown);
            dojo.connect(this, "_onBlur", this, this._runBlur);		//绑定失去焦点事件和字符格式化方法
            this._lastValue=" ";
            if(this.firstValue)
            {
            	this.setValue(this.firstValue);      //赋上初值          	      	
            }                    
        },
        
        _onMouserOver: function(evt){
            this.displayMessage(this._currentMessage);
        },
        _onMouserOut: function(evt){
            dijit.hideTooltip(this.domNode);
        },        
         
        /** @method: 验证，目前继承父类的验证方法
         * @param: {Date}newValue
         * */
        onChange: function(newValue)
        {  
        	this._lastValue=this.getValue();        	
			this.inherited('onChange', arguments);       
        },   
        
        /** @method: 将目前的显示值经过格式化返回  表单进行数据绑定会调用此方法获取当前值
        	@return: {Sring}  被格式化的值 
        */
        getValue: function()
        {        	
        	if(!this.textbox.value)
            {
            	return "";
            }              
        	return this.textbox.value; 	
        },        
        
        /**  @method: 对this.textbox赋值  参数可以是Date对象或者String 若果能转换为Date对象，则显示值改变
         *   @param:  {String}value or {Date}value
         *	 @return: {null}
         */
        setValue: function(value)
        {        	 	
        	//以下为没有弹出窗口对象时，新建一个弹出窗口对象并进行赋值防止出现NaN的情况 
        	if(!this._picker)
        	{
        		this._open();
        		this._close();
        	}    	      	
            var v = [];                         
			if (value instanceof Date) 
			{					
	           v[0] = value;
            }   
			else if (typeof value == "string") 
			{			
				if(value.length==0)
                {
                	this.textbox.value="";
                	return;
                }
                else                 	
				if (value.length &gt;= 6) 
				{				
                    //setValue的类型为Date对象方能成功
                    v[0]=new Date();                                   
                    v[0]=this.getFormatDate(value);                     	                                       
                }
            }   
            console.log("v[0] is "+v[0]);
            console.log(v[0] instanceof Date&amp;&amp;v[0].getFullYear());            
            this.inherited("setValue", arguments, v);        
            if(v[0] instanceof Date&amp;&amp;v[0].getFullYear())
            {           	
            	//var testValue=dojo.date.locale.format(v[0],this._pattern);            	
            	if(this._lastValue!=this.textbox.value)
            	{            		
            		this._lastValue=this.textbox.value;
            		console.log("_lastValue is "+this._lastValue);
            	}
            }             
        }        
    });
}
</pre>
<p>&nbsp;原先改写了下dojo的日期控件，没太用心，做个反面例子。</p>
<p>代码如下，上级文件夹&ldquo;包&rdquo;叫bad.form，具体对象名字为&ldquo;DateBox&rdquo;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;</p>
<p>&nbsp;</p>
<h1 style="margin: 13pt 0cm;"><span lang="EN-US">bad.form.DateBox</span></h1>
<h3><span lang="EN-US" style="mso-bidi-font-family: Arial; mso-fareast-font-family: Arial;"><span style="mso-list: Ignore;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>属性</h3>
<p>
<table class="MsoTableGrid" cellspacing="0" border="1" align="left" width="607" cellpadding="0" style="margin: auto 6.75pt; width: 455.4pt; border-collapse: collapse; mso-border-alt: solid windowtext .5pt; mso-yfti-tbllook: 480; mso-table-lspace: 9.0pt; mso-table-rspace: 9.0pt; mso-table-anchor-vertical: page; mso-table-anchor-horizontal: margin; mso-table-left: left; mso-table-top: 196.85pt; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt; mso-border-insideh: .5pt solid windowtext; mso-border-insidev: .5pt solid windowtext;">
<tbody>
<tr style="height: 15.9pt; mso-yfti-irow: 0; mso-yfti-firstrow: yes;">
<td valign="top" width="115" style="padding-right: 5.4pt; padding-left: 5.4pt; background: #d9d9d9; padding-bottom: 0cm; width: 86.4pt; padding-top: 0cm; height: 15.9pt; mso-border-alt: solid windowtext .5pt; border: windowtext 1pt solid;">
<p class="MsoNormal" align="center" style="margin: 0cm 0cm 0pt; text-align: center; mso-element: frame; mso-element-frame-hspace: 9.0pt; mso-element-wrap: around; mso-element-anchor-vertical: page; mso-element-anchor-horizontal: margin; mso-element-top: 196.85pt; mso-height-rule: exactly;"><span style="font-size: small; font-family: 宋体;">属性名</span></p>
</td>
<td valign="top" width="120" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; border-top: windowtext 1pt solid; background: #d9d9d9; padding-bottom: 0cm; border-left: #ece9d8; width: 90pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; height: 15.9pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt;">
<p class="MsoNormal" align="center" style="margin: 0cm 0cm 0pt; text-align: center; mso-element: frame; mso-element-frame-hspace: 9.0pt; mso-element-wrap: around; mso-element-anchor-vertical: page; mso-element-anchor-horizontal: margin; mso-element-top: 196.85pt; mso-height-rule: exactly;"><span style="font-size: small; font-family: 宋体;">类型</span></p>
</td>
<td valign="top" width="168" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; border-top: windowtext 1pt solid; background: #d9d9d9; padding-bottom: 0cm; border-left: #ece9d8; width: 126pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; height: 15.9pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt;">
<p class="MsoNormal" align="center" style="margin: 0cm 0cm 0pt; text-align: center; mso-element: frame; mso-element-frame-hspace: 9.0pt; mso-element-wrap: around; mso-element-anchor-vertical: page; mso-element-anchor-horizontal: margin; mso-element-top: 196.85pt; mso-height-rule: exactly;"><span style="font-size: small; font-family: 宋体;">默认值</span></p>
</td>
<td valign="top" width="204" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; border-top: windowtext 1pt solid; background: #d9d9d9; padding-bottom: 0cm; border-left: #ece9d8; width: 153pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; height: 15.9pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt;">
<p class="MsoNormal" align="center" style="margin: 0cm 0cm 0pt; text-align: center; mso-element: frame; mso-element-frame-hspace: 9.0pt; mso-element-wrap: around; mso-element-anchor-vertical: page; mso-element-anchor-horizontal: margin; mso-element-top: 196.85pt; mso-height-rule: exactly;"><span style="font-size: small; font-family: 宋体;">描述</span></p>
</td>
</tr>
<tr style="height: 15.9pt; mso-yfti-irow: 1;">
<td valign="top" width="115" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; border-top: #ece9d8; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 86.4pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; height: 15.9pt; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;">
<p class="MsoNormal" align="center" style="margin: 0cm 0cm 0pt; text-align: center; mso-element: frame; mso-element-frame-hspace: 9.0pt; mso-element-wrap: around; mso-element-anchor-vertical: page; mso-element-anchor-horizontal: margin; mso-element-top: 196.85pt; mso-height-rule: exactly;"><span style="font-family: Arial;"><span style="font-size: small;">Id</span></span></p>
</td>
<td valign="top" width="120" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; border-top: #ece9d8; padding-bottom: 0cm; border-left: #ece9d8; width: 90pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; height: 15.9pt; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;">
<p class="MsoNormal" align="center" style="margin: 0cm 0cm 0pt; text-align: center; mso-element: frame; mso-element-frame-hspace: 9.0pt; mso-element-wrap: around; mso-element-anchor-vertical: page; mso-element-anchor-horizontal: margin; mso-element-top: 196.85pt; mso-height-rule: exactly;"><span style="font-family: Arial;"><span style="font-size: small;">String</span></span></p>
</td>
<td valign="top" width="168" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; border-top: #ece9d8; padding-bottom: 0cm; border-left: #ece9d8; width: 126pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; height: 15.9pt; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;">
<p class="MsoNormal" align="center" style="margin: 0cm 0cm 0pt; text-align: center; mso-element: frame; mso-element-frame-hspace: 9.0pt; mso-element-wrap: around; mso-element-anchor-vertical: page; mso-element-anchor-horizontal: margin; mso-element-top: 196.85pt; mso-height-rule: exactly;"><span style="font-size: small; font-family: 宋体;">无</span></p>
</td>
<td valign="top" width="204" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; border-top: #ece9d8; padding-bottom: 0cm; border-left: #ece9d8; width: 153pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; height: 15.9pt; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;">
<p class="MsoNormal" align="center" style="margin: 0cm 0cm 0pt; text-align: center; mso-element: frame; mso-element-frame-hspace: 9.0pt; mso-element-wrap: around; mso-element-anchor-vertical: page; mso-element-anchor-horizontal: margin; mso-element-top: 196.85pt; mso-height-rule: exactly;"><span style="font-size: small; font-family: 宋体;">组件标识</span></p>
</td>
</tr>
<tr style="height: 15.3pt; mso-yfti-irow: 2;">
<td valign="top" width="115" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; border-top: #ece9d8; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 86.4pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; height: 15.3pt; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;">
<p class="MsoNormal" align="center" style="margin: 0cm 0cm 0pt; text-align: center; mso-element: frame; mso-element-frame-hspace: 9.0pt; mso-element-wrap: around; mso-element-anchor-vertical: page; mso-element-anchor-horizontal: margin; mso-element-top: 196.85pt; mso-height-rule: exactly;"><span style="font-family: Arial;"><span style="font-size: small;">jsId</span></span></p>
</td>
<td valign="top" width="120" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; border-top: #ece9d8; padding-bottom: 0cm; border-left: #ece9d8; width: 90pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; height: 15.3pt; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;">
<p class="MsoNormal" align="center" style="margin: 0cm 0cm 0pt; text-align: center; mso-element: frame; mso-element-frame-hspace: 9.0pt; mso-element-wrap: around; mso-element-anchor-vertical: page; mso-element-anchor-horizontal: margin; mso-element-top: 196.85pt; mso-height-rule: exactly;"><span style="font-family: Arial;"><span style="font-size: small;">String</span></span></p>
</td>
<td valign="top" width="168" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; border-top: #ece9d8; padding-bottom: 0cm; border-left: #ece9d8; width: 126pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; height: 15.3pt; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;">
<p class="MsoNormal" align="center" style="margin: 0cm 0cm 0pt; text-align: center; mso-element: frame; mso-element-frame-hspace: 9.0pt; mso-element-wrap: around; mso-element-anchor-vertical: page; mso-element-anchor-horizontal: margin; mso-element-top: 196.85pt; mso-height-rule: exactly;"><span style="font-size: small; font-family: 宋体;">无</span></p>
</td>
<td valign="top" width="204" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; border-top: #ece9d8; padding-bottom: 0cm; border-left: #ece9d8; width: 153pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; height: 15.3pt; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;">
<p class="MsoNormal" align="center" style="margin: 0cm 0cm 0pt; text-align: center; mso-element: frame; mso-element-frame-hspace: 9.0pt; mso-element-wrap: around; mso-element-anchor-vertical: page; mso-element-anchor-horizontal: margin; mso-element-top: 196.85pt; mso-height-rule: exactly;"><span style="font-size: small;"><span style="font-family: 宋体;">通过</span><span style="font-family: Arial;">jsId</span><span style="font-family: 宋体;">可以获得<span style="mso-bidi-font-family: 'Times New Roman'; mso-bidi-font-weight: normal; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial;">控件</span>对象</span></span></p>
</td>
</tr>
<tr style="height: 15.9pt; mso-yfti-irow: 3;">
<td valign="top" width="115" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; border-top: #ece9d8; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 86.4pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; height: 15.9pt; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;">
<p class="MsoNormal" align="center" style="margin: 0cm 0cm 0pt; text-align: center; mso-element: frame; mso-element-frame-hspace: 9.0pt; mso-element-wrap: around; mso-element-anchor-vertical: page; mso-element-anchor-horizontal: margin; mso-element-top: 196.85pt; mso-height-rule: exactly;"><span style="font-family: Arial;"><span style="font-size: small;">_popupClass</span></span></p>
</td>
<td valign="top" width="120" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; border-top: #ece9d8; padding-bottom: 0cm; border-left: #ece9d8; width: 90pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; height: 15.9pt; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;">
<p class="MsoNormal" align="center" style="margin: 0cm 0cm 0pt; text-align: center; mso-element: frame; mso-element-frame-hspace: 9.0pt; mso-element-wrap: around; mso-element-anchor-vertical: page; mso-element-anchor-horizontal: margin; mso-element-top: 196.85pt; mso-height-rule: exactly;"><span style="font-family: Arial;"><span style="font-size: small;">String</span></span></p>
</td>
<td valign="top" width="168" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; border-top: #ece9d8; padding-bottom: 0cm; border-left: #ece9d8; width: 126pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; height: 15.9pt; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;">
<p class="MsoNormal" align="center" style="margin: 0cm 0cm 0pt; text-align: center; mso-element: frame; mso-element-frame-hspace: 9.0pt; mso-element-wrap: around; mso-element-anchor-vertical: page; mso-element-anchor-horizontal: margin; mso-element-top: 196.85pt; mso-height-rule: exactly;"><span style="font-family: Arial;"><span style="font-size: small;">"dijit._Calendar"</span></span></p>
</td>
<td valign="top" width="204" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; border-top: #ece9d8; padding-bottom: 0cm; border-left: #ece9d8; width: 153pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; height: 15.9pt; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;">
<p class="MsoNormal" align="center" style="margin: 0cm 0cm 0pt; text-align: center; mso-element: frame; mso-element-frame-hspace: 9.0pt; mso-element-wrap: around; mso-element-anchor-vertical: page; mso-element-anchor-horizontal: margin; mso-element-top: 196.85pt; mso-height-rule: exactly;"><span style="font-size: small; font-family: 宋体;">弹出窗口类型</span></p>
</td>
</tr>
<tr style="height: 15.9pt; mso-yfti-irow: 4;">
<td valign="top" width="115" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; border-top: #ece9d8; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 86.4pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; height: 15.9pt; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;">
<p class="MsoNormal" align="center" style="margin: 0cm 0cm 0pt; text-align: center; mso-element: frame; mso-element-frame-hspace: 9.0pt; mso-element-wrap: around; mso-element-anchor-vertical: page; mso-element-anchor-horizontal: margin; mso-element-top: 196.85pt; mso-height-rule: exactly;"><span style="font-family: Arial;"><span style="font-size: small;">datePattern</span></span></p>
</td>
<td valign="top" width="120" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; border-top: #ece9d8; padding-bottom: 0cm; border-left: #ece9d8; width: 90pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; height: 15.9pt; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;">
<p class="MsoNormal" align="center" style="margin: 0cm 0cm 0pt; text-align: center; mso-element: frame; mso-element-frame-hspace: 9.0pt; mso-element-wrap: around; mso-element-anchor-vertical: page; mso-element-anchor-horizontal: margin; mso-element-top: 196.85pt; mso-height-rule: exactly;"><span style="font-family: Arial;"><span style="font-size: small;">String</span></span></p>
</td>
<td valign="top" width="168" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; border-top: #ece9d8; padding-bottom: 0cm; border-left: #ece9d8; width: 126pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; height: 15.9pt; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;">
<p class="MsoNormal" align="center" style="margin: 0cm 0cm 0pt; text-align: center; mso-element: frame; mso-element-frame-hspace: 9.0pt; mso-element-wrap: around; mso-element-anchor-vertical: page; mso-element-anchor-horizontal: margin; mso-element-top: 196.85pt; mso-height-rule: exactly;"><span style="font-family: Arial;"><span style="font-size: small;">&ldquo;yyyy-MM-dd&rdquo;</span></span></p>
</td>
<td valign="top" width="204" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; border-top: #ece9d8; padding-bottom: 0cm; border-left: #ece9d8; width: 153pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; height: 15.9pt; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;">
<p class="MsoNormal" align="center" style="margin: 0cm 0cm 0pt; text-align: center; mso-element: frame; mso-element-frame-hspace: 9.0pt; mso-element-wrap: around; mso-element-anchor-vertical: page; mso-element-anchor-horizontal: margin; mso-element-top: 196.85pt; mso-height-rule: exactly;"><span style="font-size: small; font-family: 宋体;">设置日期格式</span></p>
</td>
</tr>
<tr style="height: 15.9pt; mso-yfti-irow: 5; mso-yfti-lastrow: yes;">
<td valign="top" width="115" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; border-top: #ece9d8; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 86.4pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; height: 15.9pt; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;">
<p class="MsoNormal" align="center" style="margin: 0cm 0cm 0pt; text-align: center; mso-element: frame; mso-element-frame-hspace: 9.0pt; mso-element-wrap: around; mso-element-anchor-vertical: page; mso-element-anchor-horizontal: margin; mso-element-top: 196.85pt; mso-height-rule: exactly;"><span style="font-family: Arial;"><span style="font-size: small;">dateValue</span></span></p>
</td>
<td valign="top" width="120" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; border-top: #ece9d8; padding-bottom: 0cm; border-left: #ece9d8; width: 90pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; height: 15.9pt; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;">
<p class="MsoNormal" align="center" style="margin: 0cm 0cm 0pt; text-align: center; mso-element: frame; mso-element-frame-hspace: 9.0pt; mso-element-wrap: around; mso-element-anchor-vertical: page; mso-element-anchor-horizontal: margin; mso-element-top: 196.85pt; mso-height-rule: exactly;"><span style="font-family: Arial;"><span style="font-size: small;">Date</span></span></p>
</td>
<td valign="top" width="168" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; border-top: #ece9d8; padding-bottom: 0cm; border-left: #ece9d8; width: 126pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; height: 15.9pt; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;">
<p class="MsoNormal" align="center" style="margin: 0cm 0cm 0pt; text-align: center; mso-element: frame; mso-element-frame-hspace: 9.0pt; mso-element-wrap: around; mso-element-anchor-vertical: page; mso-element-anchor-horizontal: margin; mso-element-top: 196.85pt; mso-height-rule: exactly;"><span style="font-size: small;"><span style="font-family: Arial;">new Date()</span><span style="font-family: 宋体;"><span style="mso-ascii-font-family: Arial; mso-hansi-font-family: Arial;">即此时此刻</span></span></span></p>
</td>
<td valign="top" width="204" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; border-top: #ece9d8; padding-bottom: 0cm; border-left: #ece9d8; width: 153pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; height: 15.9pt; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;">
<p class="MsoNormal" align="center" style="margin: 0cm 0cm 0pt; text-align: center; mso-element: frame; mso-element-frame-hspace: 9.0pt; mso-element-wrap: around; mso-element-anchor-vertical: page; mso-element-anchor-horizontal: margin; mso-element-top: 196.85pt; mso-height-rule: exactly;"><span style="font-size: small; font-family: 宋体;">日期值</span></p>
</td>
</tr>
</tbody>
</table>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-family: Arial;"><span style="font-size: small;">&nbsp;</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-family: Arial;"><span style="font-size: small;">&nbsp;</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-family: Arial;"><span style="font-size: small;">&nbsp;</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;">&nbsp;</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;">&nbsp;</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;">&nbsp;</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;">&nbsp;</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;">&nbsp;</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;">&nbsp;</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small; font-family: 宋体;">备注</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><span style="font-size: small;"><span style="font-family: 宋体;">目前</span><span style="font-family: Arial;">_popupClass</span><span style="mso-ascii-font-family: Arial; mso-hansi-font-family: Arial;"><span style="font-family: 宋体;">可选类型为</span></span><span style="font-family: Arial;">"dijit._Calendar"</span><span style="mso-ascii-font-family: Arial; mso-hansi-font-family: Arial;"><span style="font-family: 宋体;">和</span></span><span style="font-family: Arial;">&rdquo;bad.form._MonthPicker&rdquo;</span><span style="font-family: 宋体;"><span style="mso-ascii-font-family: Arial; mso-hansi-font-family: Arial;">两种，前一种完整显示年月日，后一种只显示年月。</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><span style="font-size: small;"><span style="font-family: Arial;">datePattern</span><span style="mso-ascii-font-family: Arial; mso-hansi-font-family: Arial;"><span style="font-family: 宋体;">设置日期验证的格式以及正确日期的显示格式以及按回车键对现有字符串中数字进行格式化的格式。可以设为</span></span><span style="font-family: Arial;">&rdquo;*yyyy*MM*dd*&rdquo;</span><span style="mso-ascii-font-family: Arial; mso-hansi-font-family: Arial;"><span style="font-family: 宋体;">或者</span></span><span style="font-family: Arial;">&rdquo;*yyyy*MM*&rdquo;</span><span style="mso-ascii-font-family: Arial; mso-hansi-font-family: Arial;"><span style="font-family: 宋体;">其中</span></span><span style="font-family: Arial;">*</span><span style="mso-ascii-font-family: Arial; mso-hansi-font-family: Arial;"><span style="font-family: 宋体;">可以代表除英文字符以外的任意字符串，</span></span><span style="font-family: Arial;">MM</span><span style="mso-ascii-font-family: Arial; mso-hansi-font-family: Arial;"><span style="font-family: 宋体;">必须要大写，如果</span></span><span style="font-family: Arial;">datePattern</span><span style="mso-ascii-font-family: Arial; mso-hansi-font-family: Arial;"><span style="font-family: 宋体;">为</span></span><span style="font-family: Arial;">&rdquo;*yyyy*MM*&rdquo;</span><span style="mso-ascii-font-family: Arial; mso-hansi-font-family: Arial;"><span style="font-family: 宋体;">，则</span></span><span style="font-family: Arial;">_popupClass</span><span style="mso-ascii-font-family: Arial; mso-hansi-font-family: Arial;"><span style="font-family: 宋体;">会变为</span></span><span style="font-family: Arial;">_popupClass</span><span style="font-family: 宋体;"><span style="mso-ascii-font-family: Arial; mso-hansi-font-family: Arial;">。</span></span></span></p>
<h3><span lang="EN-US" style="mso-bidi-font-family: Arial; mso-fareast-font-family: Arial;"><span style="mso-list: Ignore;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>方法</h3>
<p>
<table class="MsoTableGrid" cellspacing="0" border="1" align="left" width="577" cellpadding="0" style="margin: auto 6.75pt; width: 432.45pt; border-collapse: collapse; mso-border-alt: solid windowtext .5pt; mso-yfti-tbllook: 480; mso-table-lspace: 9.0pt; mso-table-rspace: 9.0pt; mso-table-anchor-vertical: page; mso-table-anchor-horizontal: margin; mso-table-left: left; mso-table-top: 508.85pt; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt; mso-border-insideh: .5pt solid windowtext; mso-border-insidev: .5pt solid windowtext;">
<tbody>
<tr style="height: 15.9pt; mso-yfti-irow: 0; mso-yfti-firstrow: yes;">
<td valign="top" width="127" style="padding-right: 5.4pt; padding-left: 5.4pt; background: #d9d9d9; padding-bottom: 0cm; width: 95.4pt; padding-top: 0cm; height: 15.9pt; mso-border-alt: solid windowtext .5pt; border: windowtext 1pt solid;">
<p class="MsoNormal" align="center" style="margin: 0cm 0cm 0pt; text-align: center; mso-element: frame; mso-element-frame-hspace: 9.0pt; mso-element-wrap: around; mso-element-anchor-vertical: page; mso-element-anchor-horizontal: margin; mso-element-top: 508.85pt; mso-height-rule: exactly;"><span style="font-size: small; font-family: 宋体;">方法名</span></p>
</td>
<td valign="top" width="156" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; border-top: windowtext 1pt solid; background: #d9d9d9; padding-bottom: 0cm; border-left: #ece9d8; width: 117pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; height: 15.9pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt;">
<p class="MsoNormal" align="center" style="margin: 0cm 0cm 0pt; text-align: center; mso-element: frame; mso-element-frame-hspace: 9.0pt; mso-element-wrap: around; mso-element-anchor-vertical: page; mso-element-anchor-horizontal: margin; mso-element-top: 508.85pt; mso-height-rule: exactly;"><span style="font-size: small; font-family: 宋体;">参数</span></p>
</td>
<td valign="top" width="168" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; border-top: windowtext 1pt solid; background: #d9d9d9; padding-bottom: 0cm; border-left: #ece9d8; width: 126pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; height: 15.9pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt;">
<p class="MsoNormal" align="center" style="margin: 0cm 0cm 0pt; text-align: center; mso-element: frame; mso-element-frame-hspace: 9.0pt; mso-element-wrap: around; mso-element-anchor-vertical: page; mso-element-anchor-horizontal: margin; mso-element-top: 508.85pt; mso-height-rule: exactly;"><span style="font-size: small; font-family: 宋体;">返回值</span></p>
</td>
<td valign="top" width="125" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; border-top: windowtext 1pt solid; background: #d9d9d9; padding-bottom: 0cm; border-left: #ece9d8; width: 94.05pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; height: 15.9pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt;">
<p class="MsoNormal" align="center" style="margin: 0cm 0cm 0pt; text-align: center; mso-element: frame; mso-element-frame-hspace: 9.0pt; mso-element-wrap: around; mso-element-anchor-vertical: page; mso-element-anchor-horizontal: margin; mso-element-top: 508.85pt; mso-height-rule: exactly;"><span style="font-size: small; font-family: 宋体;">描述</span></p>
</td>
</tr>
<tr style="height: 15.9pt; mso-yfti-irow: 1;">
<td valign="top" width="127" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; border-top: #ece9d8; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 95.4pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; height: 15.9pt; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;">
<p class="MsoNormal" align="center" style="margin: 0cm 0cm 0pt; text-align: center; mso-element: frame; mso-element-frame-hspace: 9.0pt; mso-element-wrap: around; mso-element-anchor-vertical: page; mso-element-anchor-horizontal: margin; mso-element-top: 508.85pt; mso-height-rule: exactly;"><span lang="EN-US"><span style="font-size: small; font-family: 宋体;">setValue</span></span></p>
</td>
<td valign="top" width="156" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; border-top: #ece9d8; padding-bottom: 0cm; border-left: #ece9d8; width: 117pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; height: 15.9pt; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;">
<p class="MsoNormal" align="center" style="margin: 0cm 0cm 0pt; text-align: center; mso-element: frame; mso-element-frame-hspace: 9.0pt; mso-element-wrap: around; mso-element-anchor-vertical: page; mso-element-anchor-horizontal: margin; mso-element-top: 508.85pt; mso-height-rule: exactly;"><span lang="EN-US"><span style="font-size: small; font-family: 宋体;">{String or Date}value</span></span></p>
</td>
<td valign="top" width="168" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; border-top: #ece9d8; padding-bottom: 0cm; border-left: #ece9d8; width: 126pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; height: 15.9pt; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;">
<p class="MsoNormal" align="center" style="margin: 0cm 0cm 0pt; text-align: center; mso-element: frame; mso-element-frame-hspace: 9.0pt; mso-element-wrap: around; mso-element-anchor-vertical: page; mso-element-anchor-horizontal: margin; mso-element-top: 508.85pt; mso-height-rule: exactly;"><span style="font-size: small; font-family: 宋体;">无</span></p>
</td>
<td valign="top" width="125" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; border-top: #ece9d8; padding-bottom: 0cm; border-left: #ece9d8; width: 94.05pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; height: 15.9pt; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;">
<p class="MsoNormal" align="center" style="margin: 0cm 0cm 0pt; text-align: center; mso-element: frame; mso-element-frame-hspace: 9.0pt; mso-element-wrap: around; mso-element-anchor-vertical: page; mso-element-anchor-horizontal: margin; mso-element-top: 508.85pt; mso-height-rule: exactly;"><span style="font-size: small; font-family: 宋体;">对控件赋值</span></p>
</td>
</tr>
<tr style="height: 15.3pt; mso-yfti-irow: 2;">
<td valign="top" width="127" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; border-top: #ece9d8; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 95.4pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; height: 15.3pt; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;">
<p class="MsoNormal" align="center" style="margin: 0cm 0cm 0pt; text-align: center; mso-element: frame; mso-element-frame-hspace: 9.0pt; mso-element-wrap: around; mso-element-anchor-vertical: page; mso-element-anchor-horizontal: margin; mso-element-top: 508.85pt; mso-height-rule: exactly;"><span lang="EN-US"><span style="font-size: small; font-family: 宋体;">getValue</span></span></p>
</td>
<td valign="top" width="156" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; border-top: #ece9d8; padding-bottom: 0cm; border-left: #ece9d8; width: 117pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; height: 15.3pt; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;">
<p class="MsoNormal" align="center" style="margin: 0cm 0cm 0pt; text-align: center; mso-element: frame; mso-element-frame-hspace: 9.0pt; mso-element-wrap: around; mso-element-anchor-vertical: page; mso-element-anchor-horizontal: margin; mso-element-top: 508.85pt; mso-height-rule: exactly;"><span style="font-size: small; font-family: 宋体;">无</span></p>
</td>
<td valign="top" width="168" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; border-top: #ece9d8; padding-bottom: 0cm; border-left: #ece9d8; width: 126pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; height: 15.3pt; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;">
<p class="MsoNormal" align="center" style="margin: 0cm 0cm 0pt; text-align: center; mso-element: frame; mso-element-frame-hspace: 9.0pt; mso-element-wrap: around; mso-element-anchor-vertical: page; mso-element-anchor-horizontal: margin; mso-element-top: 508.85pt; mso-height-rule: exactly;"><span lang="EN-US"><span style="font-size: small; font-family: 宋体;">String</span></span></p>
</td>
<td valign="top" width="125" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; border-top: #ece9d8; padding-bottom: 0cm; border-left: #ece9d8; width: 94.05pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; height: 15.3pt; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;">
<p class="MsoNormal" align="center" style="margin: 0cm 0cm 0pt; text-align: center; mso-element: frame; mso-element-frame-hspace: 9.0pt; mso-element-wrap: around; mso-element-anchor-vertical: page; mso-element-anchor-horizontal: margin; mso-element-top: 508.85pt; mso-height-rule: exactly;"><span style="font-size: small; font-family: 宋体;">获取控件的值</span></p>
</td>
</tr>
<tr style="height: 15.3pt; mso-yfti-irow: 3;">
<td valign="top" width="127" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; border-top: #ece9d8; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 95.4pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; height: 15.3pt; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;">
<p class="MsoNormal" align="center" style="margin: 0cm 0cm 0pt; text-align: center; mso-element: frame; mso-element-frame-hspace: 9.0pt; mso-element-wrap: around; mso-element-anchor-vertical: page; mso-element-anchor-horizontal: margin; mso-element-top: 508.85pt; mso-height-rule: exactly;"><span lang="EN-US"><span style="font-size: small; font-family: 宋体;">_open</span></span></p>
</td>
<td valign="top" width="156" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; border-top: #ece9d8; padding-bottom: 0cm; border-left: #ece9d8; width: 117pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; height: 15.3pt; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;">
<p class="MsoNormal" align="center" style="margin: 0cm 0cm 0pt; text-align: center; mso-element: frame; mso-element-frame-hspace: 9.0pt; mso-element-wrap: around; mso-element-anchor-vertical: page; mso-element-anchor-horizontal: margin; mso-element-top: 508.85pt; mso-height-rule: exactly;"><span style="font-size: small; font-family: 宋体;">无</span></p>
</td>
<td valign="top" width="168" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; border-top: #ece9d8; padding-bottom: 0cm; border-left: #ece9d8; width: 126pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; height: 15.3pt; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;">
<p class="MsoNormal" align="center" style="margin: 0cm 0cm 0pt; text-align: center; mso-element: frame; mso-element-frame-hspace: 9.0pt; mso-element-wrap: around; mso-element-anchor-vertical: page; mso-element-anchor-horizontal: margin; mso-element-top: 508.85pt; mso-height-rule: exactly;"><span style="font-size: small; font-family: 宋体;">无</span></p>
</td>
<td valign="top" width="125" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; border-top: #ece9d8; padding-bottom: 0cm; border-left: #ece9d8; width: 94.05pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; height: 15.3pt; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;">
<p class="MsoNormal" align="center" style="margin: 0cm 0cm 0pt; text-align: center; mso-element: frame; mso-element-frame-hspace: 9.0pt; mso-element-wrap: around; mso-element-anchor-vertical: page; mso-element-anchor-horizontal: margin; mso-element-top: 508.85pt; mso-height-rule: exactly;"><span style="font-size: small; font-family: 宋体;">弹出窗口</span></p>
</td>
</tr>
<tr style="height: 15.3pt; mso-yfti-irow: 4; mso-yfti-lastrow: yes;">
<td valign="top" width="127" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; border-top: #ece9d8; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 95.4pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; height: 15.3pt; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;">
<p class="MsoNormal" align="center" style="margin: 0cm 0cm 0pt; text-align: center; mso-element: frame; mso-element-frame-hspace: 9.0pt; mso-element-wrap: around; mso-element-anchor-vertical: page; mso-element-anchor-horizontal: margin; mso-element-top: 508.85pt; mso-height-rule: exactly;"><span lang="EN-US"><span style="font-size: small; font-family: 宋体;">_close</span></span></p>
</td>
<td valign="top" width="156" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; border-top: #ece9d8; padding-bottom: 0cm; border-left: #ece9d8; width: 117pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; height: 15.3pt; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;">
<p class="MsoNormal" align="center" style="margin: 0cm 0cm 0pt; text-align: center; mso-element: frame; mso-element-frame-hspace: 9.0pt; mso-element-wrap: around; mso-element-anchor-vertical: page; mso-element-anchor-horizontal: margin; mso-element-top: 508.85pt; mso-height-rule: exactly;"><span style="font-size: small; font-family: 宋体;">无</span></p>
</td>
<td valign="top" width="168" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; border-top: #ece9d8; padding-bottom: 0cm; border-left: #ece9d8; width: 126pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; height: 15.3pt; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;">
<p class="MsoNormal" align="center" style="margin: 0cm 0cm 0pt; text-align: center; mso-element: frame; mso-element-frame-hspace: 9.0pt; mso-element-wrap: around; mso-element-anchor-vertical: page; mso-element-anchor-horizontal: margin; mso-element-top: 508.85pt; mso-height-rule: exactly;"><span style="font-size: small; font-family: 宋体;">无</span></p>
</td>
<td valign="top" width="125" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; border-top: #ece9d8; padding-bottom: 0cm; border-left: #ece9d8; width: 94.05pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; height: 15.3pt; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;">
<p class="MsoNormal" align="center" style="margin: 0cm 0cm 0pt; text-align: center; mso-element: frame; mso-element-frame-hspace: 9.0pt; mso-element-wrap: around; mso-element-anchor-vertical: page; mso-element-anchor-horizontal: margin; mso-element-top: 508.85pt; mso-height-rule: exactly;"><span style="font-size: small; font-family: 宋体;">关闭窗口</span></p>
</td>
</tr>
</tbody>
</table>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;">&nbsp;</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;">&nbsp;</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;">&nbsp;</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;">&nbsp;</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;">&nbsp;</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;">&nbsp;</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;">&nbsp;</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;">&nbsp;</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: 宋体;"><span style="mso-ascii-font-family: Arial; mso-hansi-font-family: Arial;">备注</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: Arial;"><span style="mso-tab-count: 1;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>setValue</span><span style="mso-ascii-font-family: Arial; mso-hansi-font-family: Arial;"><span style="font-family: 宋体;">要求参数为</span></span><span style="font-family: Arial;">Javascript</span><span style="mso-ascii-font-family: Arial; mso-hansi-font-family: Arial;"><span style="font-family: 宋体;">的内置对象</span></span><span style="font-family: Arial;">Date</span><span style="mso-ascii-font-family: Arial; mso-hansi-font-family: Arial;"><span style="font-family: 宋体;">或者能转化为</span></span><span style="font-family: Arial;">Date</span><span style="mso-ascii-font-family: Arial; mso-hansi-font-family: Arial;"><span style="font-family: 宋体;">的</span></span><span style="font-family: Arial;">String</span><span style="mso-ascii-font-family: Arial; mso-hansi-font-family: Arial;"><span style="font-family: 宋体;">（如</span></span><span style="font-family: Arial;">2000-10-11</span><span style="font-family: Arial;"> 00:00:00:0</span><span style="font-family: 宋体;"><span style="mso-ascii-font-family: Arial; mso-hansi-font-family: Arial;">）</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: Arial;"><span style="mso-tab-count: 1;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>getValue</span><span style="mso-ascii-font-family: Arial; mso-hansi-font-family: Arial;"><span style="font-family: 宋体;">默认返回形如</span></span><span style="font-family: Arial;">"yyyy-MM-dd"</span><span style="mso-ascii-font-family: Arial; mso-hansi-font-family: Arial;"><span style="font-family: 宋体;">的</span></span><span style="font-family: Arial;">String</span><span style="mso-ascii-font-family: Arial; mso-hansi-font-family: Arial;"><span style="font-family: 宋体;">，此方法可以重写</span></span><span style="font-family: Arial;">,</span><span style="font-family: 宋体;"><span style="mso-ascii-font-family: Arial; mso-hansi-font-family: Arial;">以需要的格式将值返回。</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-family: Arial;"><span style="font-size: small;">&nbsp;</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small; font-family: Arial;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></p>
<h3><span lang="EN-US" style="mso-bidi-font-family: Arial; mso-fareast-font-family: Arial;"><span style="mso-list: Ignore;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>事件</h3>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-family: Arial;"><span style="font-size: small;">&nbsp;
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;">
<table border="0" align="center">
<tbody>
<tr>
<td>事件名</td>
<td>参数</td>
<td>返回值</td>
<td><span style="font-size: 10.5pt; font-family: 宋体; mso-bidi-font-family: Arial; mso-bidi-font-weight: bold; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA;">描述</span></td>
</tr>
<tr>
<td><span style="font-size: 10.5pt; font-family: Arial; mso-fareast-font-family: 宋体; mso-bidi-font-weight: bold; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA;">onValueChange</span></td>
<td>{Date}newValue,{Date}oldValue</td>
<td><span style="font-size: 10.5pt; font-family: 宋体; mso-bidi-font-family: Arial; mso-bidi-font-weight: bold; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA;">无</span></td>
<td>值改变事件</td>
</tr>
</tbody>
</table>
</p>
</span></span></p>
          <br/>
          <span style="color:red;">
            <a href="http://shatuo.javaeye.com/blog/195926#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/115' target='_blank'><span style="color:red;font-weight:bold;">JavaEye图灵杯第2届问答大赛开始了！8月4日至8月17日，奖品丰厚！</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 23 May 2008 10:45:07 +0800</pubDate>
        <link>http://shatuo.javaeye.com/blog/195926</link>
        <guid>http://shatuo.javaeye.com/blog/195926</guid>
      </item>
      <item>
        <title>准备考研了</title>
        <author>shatuo</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://shatuo.javaeye.com">shatuo</a>&nbsp;
          链接：<a href="http://shatuo.javaeye.com/blog/189613" style="color:red;">http://shatuo.javaeye.com/blog/189613</a>&nbsp;
          发表时间: 2008年05月05日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 觉的做软件太累，对我个人而言没有什么乐趣，准备转行，昨天跟家里人商量，还是考研吧，买了陈文灯的《复习指南》，做了几十页的题，习题也没有传说中的难度，看来大一的高数底子现在还有，什么积分、微分一下子都想起来的，为了换一个行业，努力加油吧，引用一首诗&ldquo;黄沙百战穿金甲，不破楼兰终不还&rdquo;。</p>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://shatuo.javaeye.com/blog/189613#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/115' target='_blank'><span style="color:red;font-weight:bold;">JavaEye图灵杯第2届问答大赛开始了！8月4日至8月17日，奖品丰厚！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 05 May 2008 10:19:54 +0800</pubDate>
        <link>http://shatuo.javaeye.com/blog/189613</link>
        <guid>http://shatuo.javaeye.com/blog/189613</guid>
      </item>
      <item>
        <title>Dojo 的单元测试框架D.O.H的使用</title>
        <author>shatuo</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://shatuo.javaeye.com">shatuo</a>&nbsp;
          链接：<a href="http://shatuo.javaeye.com/blog/183453" style="color:red;">http://shatuo.javaeye.com/blog/183453</a>&nbsp;
          发表时间: 2008年04月16日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          &nbsp;&nbsp;&nbsp;&nbsp; 刚刚接触doh时，发现doh的主要js文件-runner.js的中有很多的方法的实现和dojo相同，查看了dojo的官方文档，原来doh可以不依赖dojo单独使用，不过使用起来变得复杂不少，脱离dojo，不能够使用dojo.require将js文件引入，需要注意路径问题。<br />&nbsp;&nbsp;&nbsp;&nbsp; 配置doh的方法比较简单，只要在测试页面中引入util.doh包下的runner.js ，使用doh.register将测试代码注册到doh中，再调用doh.run即可进行测试了。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在测试中用到最多的是doh的doh.is(即doh. assertEqual)方法，这个方法是断言，还有通过测试doh.t（即doh.assertTrue），以及失败测试doh.f （即doh.assertFalse），和异常测试doh.e （即doh.assertError）。 doh可运行在多种容器中，能运行的环境不限于浏览器。<br />&nbsp;&nbsp;&nbsp;&nbsp; 本次被测试的组件运行环境为浏览器，容器自然也是浏览器。执行测试页面的head中加入如下代码。 <pre name="code" class="html">&lt;meta
 http-equiv="REFRESH" content="0;url=../../util/doh/runner.html?testModule=unieap.test.module">
</pre><br />  &nbsp;&nbsp;其中url中的../../util/doh/runner.html 设置doh的路径; testModule为自己写的测试用例路径，和dojo.require的路径写法一样.<br />打开这个页面就会跳到doh的页面，执行真正的测试了。<br />&nbsp;
          <br/>
          <span style="color:red;">
            <a href="http://shatuo.javaeye.com/blog/183453#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/115' target='_blank'><span style="color:red;font-weight:bold;">JavaEye图灵杯第2届问答大赛开始了！8月4日至8月17日，奖品丰厚！</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 16 Apr 2008 17:01:49 +0800</pubDate>
        <link>http://shatuo.javaeye.com/blog/183453</link>
        <guid>http://shatuo.javaeye.com/blog/183453</guid>
      </item>
      <item>
        <title>js的Date对象以及dojo的Date对象</title>
        <author>shatuo</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://shatuo.javaeye.com">shatuo</a>&nbsp;
          链接：<a href="http://shatuo.javaeye.com/blog/183366" style="color:red;">http://shatuo.javaeye.com/blog/183366</a>&nbsp;
          发表时间: 2008年04月16日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          1)	js内置Date类<br />javascript内置Date类基于Java中的java.util.Date类的早期版本，把日期存储为距离UTC时间（格林尼治标准时间）1970年1月1日凌晨零点的毫秒数，使用Date.valueof()就可以查看这个数值。<br />每个Date有如下属性。<br />1.	年<br />2.	月，值为0-11,0表示一月<br />3.	日<br />4.	时<br />5.	分<br />6.	秒<br /><br />创建新的Date对象	<br /><pre name="code" class="js">var date=new Date(); //创建表示当前日期的Date对象
	var date=newDate(2008,0,1); //创建表示2008年1月1日的Date对象。</pre><br /><br /><br />	设置和获取日期值的某部分方法。<br />1.	setFullYear(/*Number*/year) 设置年，参数为4位数字<br />2.	getFullYear() 获得年，返回4位数字s<br />3.	setMonth(/*Number*/month) 设置月<br />4.	getMonth()  获得月(0-11) <br />5.	setDate(/*Number*/date)  设置日<br />6.	getDate()    获得日<br /><br />2)	dojo.date<br />这个类提供以下方法.<br />1.	dojo.date.compare(/*Date*/date1,/*Date*/date2)<br />这个方法用来比较两个Date对象是否相等，如果date1和date2表示的Date对象相同返回0，如果date1表示的Date对象在时间轴上位置ate2之后，返回1，否则返回-1；<br />2.	dojo.date.add (/*Date*/date,/*Numer*/ interval,/*Number*/ amount)<br />这个方法用来改变Date对象表示的日期，其中interval表示Date对象改变的类型，包括年、季度、月、周数、星期几、日、时、分、秒。<br /><br />3)	dojo.date.locale<br />这个类提供以下方法。<br />1.	dojo.date.locale.formatPattern(/*Date*/dateObject, /*Array*/bundle, /*String*/pattern)<br />这个方法可以将Date对象按照指定的格式(pattern)和配置(bundle)转换为字符串形式<br />2.	dojo.date.locale.format(/*Date*/dateObject, /*Object?*/options)<br />这个方法可以将将Date对象按照配置(主要是国际化,如options.localzh中包含代表中文的zh字符，则会在结果中显示中文字符年、月、日)转化为字符串形式
          <br/>
          <span style="color:red;">
            <a href="http://shatuo.javaeye.com/blog/183366#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/115' target='_blank'><span style="color:red;font-weight:bold;">JavaEye图灵杯第2届问答大赛开始了！8月4日至8月17日，奖品丰厚！</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 16 Apr 2008 13:56:45 +0800</pubDate>
        <link>http://shatuo.javaeye.com/blog/183366</link>
        <guid>http://shatuo.javaeye.com/blog/183366</guid>
      </item>
      <item>
        <title>dijit控件生命周期分析</title>
        <author>shatuo</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://shatuo.javaeye.com">shatuo</a>&nbsp;
          链接：<a href="http://shatuo.javaeye.com/blog/183362" style="color:red;">http://shatuo.javaeye.com/blog/183362</a>&nbsp;
          发表时间: 2008年04月16日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          所有的基于dijit的widget共同父类为dijit._Widget，由于javascript先解析父类在解析继承的子类javascript继承机制，dojo机制下的所有widget会按照以下顺序完成自身js对象生成以及dom对象的渲染。<br />1)	postscript                       <br />2)	create	<br />3)	postMixInProperties<br />4)	buildRendering<br />5)	postCreate<br />6)	startup<br />在解析widget时，dojo会生成一个新建一个widgetset对象dojo.registry用来管理widget，dojo.registry中的属性_hash用来保存widget，如果widget有id这个属性可以通过dojo.registry.add(widget)方法将widget放到_hash中，如果没有id或者id重复，这也是id在html中必须设置的原因。接下来我们就可以使用dijit.byId(也就是dojo.registry.byId)获取widget的js对象。<br />这个地方的代码为。<br /><pre name="code" class="js">// dijit.WidgetSet包含所有拥有唯一id的widget对象
dojo.declare("dijit.WidgetSet", null, {
    //构造器，初始化this._hash
	constructor: function(){
		// summary:
		//	A set of widgets indexed by id
		this._hash={};
	},

	//注册,id冲突会失败
	add: function(/*Widget*/ widget){
		if(this._hash[widget.id]){
			throw new Error("Tried to register widget with id==" + widget.id + " but that id is already registered");
		}
		this._hash[widget.id]=widget;
	},
	
	//根据id移除
	remove: function(/*String*/ id){
		delete this._hash[id];
	},

    //通过这个可以遍历现有的widget
	forEach: function(/*Function*/ func){
		for(var id in this._hash){
			func(this._hash[id]);
		}
	},
     
    //通过此方法可以查询到满足条件的widget集合
	filter: function(/*Function*/ filter){
		var res = new dijit.WidgetSet();
		this.forEach(function(widget){
			if(filter(widget)){ res.add(widget); }
		});
		return res;		// dijit.WidgetSet
	},
     
     //根据id获取widget对象
	byId: function(/*String*/ id){
		return this._hash[id];
	},
     
    //可以获取同一类型的widget
	byClass: function(/*String*/ cls){
		return this.filter(function(widget){ return widget.declaredClass==cls; });	// dijit.WidgetSet
	}
	});

dijit.registry = new dijit.WidgetSet();     //dijit.registry用来管理widget对象</pre>
          <br/>
          <span style="color:red;">
            <a href="http://shatuo.javaeye.com/blog/183362#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/115' target='_blank'><span style="color:red;font-weight:bold;">JavaEye图灵杯第2届问答大赛开始了！8月4日至8月17日，奖品丰厚！</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 16 Apr 2008 13:54:13 +0800</pubDate>
        <link>http://shatuo.javaeye.com/blog/183362</link>
        <guid>http://shatuo.javaeye.com/blog/183362</guid>
      </item>
      <item>
        <title>错误的选择创建主键方式</title>
        <author>shatuo</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://shatuo.javaeye.com">shatuo</a>&nbsp;
          链接：<a href="http://shatuo.javaeye.com/blog/166189" style="color:red;">http://shatuo.javaeye.com/blog/166189</a>&nbsp;
          发表时间: 2008年02月29日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          由于经验的不足，在设计数据库时，将表UP_CATEGORY_CATEGORY的主键交由Spring维护，之前设计可以实现方法如下。<br />	Oracle数据库<br />先在数据库建立一个自增序列。<br /><pre name="code" class="java">create sequence seq_post_id
increment by 1
start with 1;</pre>同时在Spring的配置文件中，增加一个Spring的自增键管理bean-  org.springframework.jdbc.support.incrementer. OracleSequenceMaxValueIncrementer，设置数据库的自增序列名，在需要获取主键时，生成一个org.springframework.jdbc.support.incrementer.DataFieldMaxValueIncrementer类的实例，再通过调用这个实例的nextIntValue方法，获得主键。<br />	Mysql数据库<br />需要再建一个表，新建一列，作为主键值的容器，同时在Spring的配置文件中加入Mysql的自增键管理bean- org.springframework.jdbc.support.incrementer.MySQLMaxValueIncrementer，同时设置数据库自增键表的表名，列名，获得主键的方法和Oracle一样。<br />以上设计存在如下问题。<br />	对数据库特性依赖比较高。<br />	不同数据库的配置也不同，不能一劳永逸。<br />在测试时发现在oracle数据库下不能通过工具生成需要的子增减序列，之前的设计全落空了，只能另寻出路了，这时获得两个建议，从DRM中取得主键，另一个使用Java的内置方法，只要获得一个不重复的值即可。由于持久层改造成DRM管理尚未完成，所以采用了第二个方案，具体实现如下。<br /><pre name="code" class="java">import java.rmi.server.UID;
String uid=new UID().toString();   
uid=uid.replaceAll(":", "");  </pre>这里使用一个JDK内置类java.rmi.server.UID，它的作用是生成一个字符串序列，对产生它的主机来说为唯一的标识符，生成的值恰是可以作为主键，用这样的方法获得主键，解决了Spring管理带来的那两个问题。
          <br/>
          <span style="color:red;">
            <a href="http://shatuo.javaeye.com/blog/166189#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/115' target='_blank'><span style="color:red;font-weight:bold;">JavaEye图灵杯第2届问答大赛开始了！8月4日至8月17日，奖品丰厚！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 29 Feb 2008 16:37:59 +0800</pubDate>
        <link>http://shatuo.javaeye.com/blog/166189</link>
        <guid>http://shatuo.javaeye.com/blog/166189</guid>
      </item>
      <item>
        <title>一些细节总结</title>
        <author>shatuo</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://shatuo.javaeye.com">shatuo</a>&nbsp;
          链接：<a href="http://shatuo.javaeye.com/blog/165698" style="color:red;">http://shatuo.javaeye.com/blog/165698</a>&nbsp;
          发表时间: 2008年02月28日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          java.rmi.server.UID这个类可以生成唯一标识的机器代码，可以用来做数据库表中的主键。生成的数据中包含“:”需要去掉。<br />  <pre name="code" class="java">
String num=new UID().toString();
num=num.replaceAll(":", ""); 
</pre><br /> Javascript 的一些方法可以通过如下方式执行。<br /><pre name="code" class="java">
//构造器
function Book (name, author, page) {
this.name = name;
this.author = author;
this.page = page;
}
var abook = new Book("JavaScript is Cool", "tom", 514);

// 增加一个原型属性
Book.prototype.getInfo = getInfo;
function getInfo() {
return this.name + " written by " + this.author + " with " + this.page + " pages";
}
//执行方法
alert(abook.getInfo());

</pre><br /><br /><br />input中的maxlength长度限制对英文字符有效，如果其中有中文的话，需要自己编写函数处理。可以通过判断charCode的值大小来区分中英文字符,大于255的为中文字符；否则为英文字符。
          <br/>
          <span style="color:red;">
            <a href="http://shatuo.javaeye.com/blog/165698#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/115' target='_blank'><span style="color:red;font-weight:bold;">JavaEye图灵杯第2届问答大赛开始了！8月4日至8月17日，奖品丰厚！</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 28 Feb 2008 12:39:32 +0800</pubDate>
        <link>http://shatuo.javaeye.com/blog/165698</link>
        <guid>http://shatuo.javaeye.com/blog/165698</guid>
      </item>
  </channel>
</rss>