easyui datebox onchange 输入框改变事件的变通处理

easyui 的 datebox控件只对外提供了一个onSelect事件。
其基类combobox有一个onChange事件。

如果需要在日期控件中手动输入日期时处理一些逻辑,onSelect事件就不能满足了。

比如当手动输入了一个合法的日期后需要获取这个日期然后进行其它逻辑处理。

这个时候可以用onChange事件。



但是如果要在输入的过程中进行对输入的字符串进行处理然后对当前日期控件进行赋值,用onChange事件就麻烦了。
会碰到赋值后显示不出来的问题。

但datebox有一个属性暴露出来。就是parser。这是一个函数,日期控件中的内容有变化时改属性函数会被调用。可以在这个函数中进行特殊处理。虽然这样做可能并不是最安全的。

$("#enddate").datebox({
	 parser:function(s){
                 //格式为yyyy-mm-dd
		 var DateRegExp = /^[1-2]\d{3}-(0[1-9]|1[0-2]){1}-(0[1-9]|[1-2][0-9]|3[0-1]){1}$/g;
			
			if(DateRegExp.test(s)){
				
			}else{
				return null;
			}
                        //字符转日期 
			var t = parseDate(s);
			if (!isNaN(t)){
				
				var firstDate = new Date(t.getFullYear(),t.getMonth(),1);

				var endDate = new Date(firstDate);

				endDate.setMonth(firstDate.getMonth()+1);
				
				endDate.setDate(0);
                                //日期转字符
				var result = endDate.format('yyyy-MM-dd');
				if(s != result){
					$("#enddate").datebox('setValue',result);
				}
				
				return endDate;
			} else {
				
				return null;
			}
		}
});


在这个例子中,对输入的日期字符进行处理,算出用户要输入的日期对应月份的最后一天,填充到日期控件中。

你可能感兴趣的:(onchange)