datepicker和focusout在文本框中

时间:2014-07-03 09:15:13

标签: c# javascript asp.net-mvc-4

我在文本框上有一个日期选择器,同时我正在使用一个函数来检查用户是否使用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;
        }
    }

1 个答案:

答案 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)");
    }
});