前端頁面突然需要在選擇時間後自動擷取所選時間内的裝置資訊,我立刻寫了一個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是一個全局變量。