開始日期:
<input type="text" class="Wdate" id="startTime" onClick="WdatePicker({autoPickDate:true,dateFmt:'yyyy-MM-dd',maxDate:'#F{$dp.$D(\'endTime\')||\'new Date()\'}',readOnly:true})" style="width: 120px;"/>
截止日期:<input type="text" class="Wdate" id="endTime" onClick="WdatePicker({autoPickDate:true,dateFmt:'yyyy-MM-dd',minDate:'#F{$dp.$D(\'startTime\')}',maxDate:new Date(),readOnly:true})" style="width: 120px;"/>
結果爲:
使用表單標籤後:
起始日期:
<form:input path="startTime" type="text" class="Wdate" id="startTime" onClick="WdatePicker({autoPickDate:true,dateFmt:'yyyy-MM-dd',maxDate:'#F{$dp.$D(\'endTime\')||\'new Date()\'}',readOnly:true})" style="width: 120px;"/>
截止日期:
<form:input path="endTime" type="text" class="Wdate" id="endTime" onClick="WdatePicker({autoPickDate:true,dateFmt:'yyyy-MM-dd',minDate:'#F{$dp.$D(\'startTime\')}',maxDate:new Date(),readOnly:true})" style="width: 120px;"/>
結果爲:
1.沒有彈出時間了,原因是什麼?在input中這樣寫,我也不知道爲什麼不會彈出時間,將此問題記錄下來。
2.點擊下一頁沒反應?
解決問題2:
當form表單中的數據是基本類型的時,直接請求action中的url,一點問題都沒有。
但是當form表單總有時間類型的數據時,且對應的controller是用一個java對象來綁定對應form提交的數據時,就會出現問題。無法提交成功。
解決辦法:
在對應的controller中新增下面的方法:
- /**
- * form表單提交 Date類型數據綁定
- * <功能詳細描述>
- * @param binder
- * @see [類、類#方法、類#成員]
- */
- @InitBinder
- public void initBinder(WebDataBinder binder) {
- SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- dateFormat.setLenient(false);
- binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true));
- }
轉自:點擊打開鏈接
解決問題1:換種方式寫代碼
<form:input id="startTime" path="startTime" style="width: 120px;" class="Wdate" />
<form:input id="endTime" path="endTime" style="width: 120px;" class="Wdate" />
$(function() {
$("#startTime").bind("click", {
'startId' : 'startTime',
'endId' : 'endTime'
}, dateStart);
$("#endTime").bind("click", {
'startId' : 'endTime',
'endId' : 'startTime'
}, dateEnd);
})
function dateStart(obj) {
var sId = obj.data.startId;
var eId = obj.data.endId;
var maxda = "";
if ($("#" + eId).val() == "") {
maxda = '%y-%M-%d';
} else {
maxda = '#F{$dp.$D(\'' + eId + '\')}';
}
WdatePicker({
el : sId,
autoPickDate : true,
minDate : '#F{$dp.$D(\'' + eId + '\',{d:-30});}',
maxDate : maxda,
dateFmt : 'yyyy-MM-dd'
});
}
//結束時間
function dateEnd(obj) {
var Id = obj.data.startId;
var eId = obj.data.endId;
var maxda = "";
if ($("#" + eId).val() != "" && DateDiff($("#" + eId).val())) {
maxda = '#F{$dp.$D(\'' + eId + '\',{d:+30});}';
} else {
maxda = '%y-%M-%d';
}
WdatePicker({
el : Id,
autoPickDate : true,
minDate : '#F{$dp.$D(\'' + eId + '\')}',
maxDate : maxda,
dateFmt : 'yyyy-MM-dd'
});
}
function DateDiff(str1) {
var date1 = str1.split("-");
var strDate1 = new Date(date1[0], date1[1] - 1, date1[2]);
var strDate2 = new Date();// 當前時間
return (strDate2.getTime() - strDate1.getTime()) / 1000 / 60 / 60 / 24 > 30;
}
controller中添加:
@InitBinder
public void initBinder(WebDataBinder binder) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
dateFormat.setLenient(false);
binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true));
}
就沒有報錯了