天天看點

關于日期控件中使用change事件無效的解決方法

前端頁面突然需要在選擇時間後自動擷取所選時間内的裝置資訊,我立刻寫了一個change()方法,測試時發現沒有觸發

原因是:change事件其實就是在元素獲得焦點的時候,儲存目前值,失去焦點的時候,會将目前值和原來儲存起來的值進行比較,如果不同,則觸發change事件。

而 在綁定了日期控件之後綁定change事件,其實文本框的值是一直沒有改變的,是以不會觸發。

查詢資料時有些網友說改日期控件,在日期控件觸發确定按鈕時調用自己寫的自定義函數即可

我這就不修改日期控件,使用以下方法即可:

HTML:

<input name="startTime" id="startTime" type="text" readOnly="true" 
class="Wdate form-control" 
onfocus="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss'});javascript:{$('#startTime').trigger('change')}" >
           

onfocus事件不會觸發自定義的change事件,如果我們想要觸發change事件實作自己想要預定的功能,可以在原來定義日期控件的html的代碼後面直接再次的調用手動觸發change事件

JS:

$("#startTime").bind("change",function(){
			
			var flag = false;
			var startTime = Page.$("#startTime").val();
			if(startTimes!=startTime){
				startTimes=startTime;
				flag=true;
			}
			var endTime = Page.$("#endTime").val();
			if(flag){
				Page.loadSelect({
					target : Page.$("#deviceName"),
					textField : "text",
					data : {"xxxx":xxxx,"startTime":startTime,"endTime":endTime},
					url : "xxx/xxx"
				});
			}

		});
           

這裡的flag是因為我發現如果不設定時間值比較的話,點選日期時間就會發請求,點确認日期按鈕也會發請求,我隻需要發一次請求即可,startTimes是一個全局變量。

繼續閱讀