我在文本框上有一个日期选择器,同时我正在使用一个函数来检查用户是否使用javascript输入了正确的日期和时间格式。
我面临的问题是每当我在文本框中选择鼠标时,datepicker就会显示它应该如果我想从datepicker中选择一个日期,执行focusout()函数,我必须再次重新点击在选择日期选择器的日期。
这是我的代码:
$('#StartDateTime').datepicker({
/* here is only to stay focusin() on the textbox after selecting date */
constrainInput: false,
fixFocusIE: false,
onSelect: function (dateText, inst) {
this.fixFocusIE = true;
$(this).change().focus();
},
onClose: function (dateText, inst) {
this.fixFocusIE = true;
this.focus();
},
beforeShow: function (input, inst) {
var result = $.browser.msie ? !this.fixFocusIE : true;
this.fixFocusIE = false;
return result;
}
}).click(function () { $(this).focus() });
$("#StartDateTime").focusout(function () {
if (sDTValid() == false) {
alert("Please enter Date (Day/Month/Year) & Time (HH:MM AM or PM)");
}
});
function sDTValid() {
/* this is the function of date and time format validation*/
var sDT = document.getElementById('StartDateTime').value;
if (sDT.match(/^(\d{1,2})\/(\d{1,2})\/(\d{4}) (\d{1,2}):(\d{2}) (.*)$/)) {
return true;
}
else {
return false;
}
}
答案 0 :(得分:0)
当用户点击datepicker元素时会触发'focusout'事件,因为它不是输入的一部分#StartDateTime
您可以在更改值时使用其他事件,例如。 '输入'
$("#StartDateTime").on('input', function () {
if (sDTValid() == false) {
alert("Please enter Date (Day/Month/Year) & Time (HH:MM AM or PM)");
}
});