我有一个像<input name="begin_time" />,<input name="end_time" />
这样的输入我正在使用jquery.datepicker和jquery-ui-timepicker-addon.js来获取日期时间。
$('input[name=begin_time]').datetimepicker({
minDate : 0,
stepMinute : 5,
beforeShow : function (input, inst) {},
onClose : function (dateText, inst) {
var endDateTextBox = $('input[name=end_time]');
var beginDateTextBox = $('input[name=begin_time]');
var testStartDate = new Date(dateText);
if (endDateTextBox.val() != '') {
var testEndDate = new Date(endDateTextBox.val());
if (testStartDate > testEndDate)
endDateTextBox.val(dateText);
} else {
endDateTextBox.val(dateText);
}
},
onSelect : function (selectedDateTime) {
var start = $(this).datetimepicker('getDate');
$('input[name=end_time]').datetimepicker('option', 'minDate', new Date(start.getTime()));
}
});
$('input[name=end_time]').datetimepicker({
onClose : function (dateText, inst) {
var startDateTextBox = $('input[name=begin_time]');
if (startDateTextBox.val() != '') {
var testStartDate = new Date(startDateTextBox.val());
var testEndDate = new Date(dateText);
if (testStartDate > testEndDate)
startDateTextBox.val(dateText);
} else {
startDateTextBox.val(dateText);
}
},
stepMinute : 5,
onSelect : function (selectedDateTime) {
var end = $(this).datetimepicker('getDate');
$('input[name=begin_time]').datetimepicker('option', 'maxDate', new Date(end.getTime()));
}
});
我也使用jquery.validate.js验证输入,并确保在提交表单之前需要它。
$('#form').validate({
rules : {
begin_time : 'required',
end_time : 'required'
},
messages : {
begin_time : 'The start time can\' be empty',
end_time : 'The event end time can\' be empty'
}
})
当用户没有填写任何内容时,我提交,然后出现该消息(它是正确的)。
但是当我提取日期时间时,错误提示仍然不会消失。我希望它消失。
有人可以给我一个建议吗?
答案 0 :(得分:1)
您可以使用focusCleanup
删除任何错误类和消息。
$(".selector").validate({
focusCleanup: true
})
答案 1 :(得分:1)
这对我有用:
$("#dateFieldID").change(function () {
$('#formID').validate({
required: true,
date: true
}).element('#dateFieldID');
});
在每个日期选择器输入字段中添加更改事件,然后验证为我删除了该字段。我在Firefox 17,IE 7 +,Safari 6和Chrome v.23中进行了测试。我已经看到其他帖子,开发人员建议挂钩到JQuery UI DatePicker onClose事件,然后在调度onClose事件时将焦点设置回日期字段。这确实工作,但是在IE中,DatePicker对话框不会隐藏。此外,错误消息仅在日期字段失去焦点后消失 - 这与其他字段不一致。这对我有用。
我希望这有助于某人。这看起来效果很好 - 至少对我来说;)
答案 2 :(得分:1)
当时的解决方案对我不起作用。当从日期选择器中选择一个日期时,所做的工作是添加以下onSelect来验证日期字段:
$("#dateFieldID").datepick({
dateFormat: 'dd/mm/yyyy',
changeMonth: true,
changeYear: true,
maxDate: 0,
onSelect: function () {
$("#dateFieldID").valid();
}
});