Ajax 对于带有时间选择器的输入字段,什么是正确的jQuery事件

Ajax 对于带有时间选择器的输入字段,什么是正确的jQuery事件,ajax,jquery,events,Ajax,Jquery,Events,我有一个数据格式为HH:mm:ss PP的输入字段。单击时间选择器时,输入字段上的焦点不会出现,这就是我无法使用onblur事件的原因。我想要的是keydown或keyup事件,但在我的例子中似乎不起作用,因为焦点在输入字段中,所以我应该使用什么jQuery事件 改变似乎很有效: 例如datepicker,我不确定您的timepicker实现是什么,因为它不在jqueryui api中。但它也应该起作用 编辑:在查看了您正在使用的datetimepicker之后,基于我看到的作为datetime

我有一个数据格式为HH:mm:ss PP的输入字段。单击时间选择器时,输入字段上的焦点不会出现,这就是我无法使用onblur事件的原因。我想要的是keydown或keyup事件,但在我的例子中似乎不起作用,因为焦点在输入字段中,所以我应该使用什么jQuery事件

改变似乎很有效:

例如datepicker,我不确定您的timepicker实现是什么,因为它不在jqueryui api中。但它也应该起作用

编辑:在查看了您正在使用的datetimepicker之后,基于我看到的作为datetimepicker结果的DOM,我认为这应该适合您:

只要确保这是在你的datetimepicker电话之后。请注意,这将在您的日历/时间选择器中的任何单击时触发,即使是单击已选择的内容,也不会更改

如果需要,可以存储输入的最后一个值,然后在继续使用此事件回调函数之前检查它是否已更改。如果确实发生了更改,请确保更新保存在中的最后一个值的变量。。。差不多

如果可能,最好的选择实际上是修改datetimepicker的js以调用函数或从更新文本输入的同一位置触发事件。看看代码:

    set: function () {
        var formatted = "";
        if (!this._unset) formatted = this.formatDate(this._date);
        if (!this.isInput) {
            if (this.component) {
                var input = this.$element.find("input");
                input.val(formatted);
                input.trigger("change"); // added this
                this._resetMaskPos(input)
            }
            this.$element.data("date", formatted)
        } else {
            this.$element.val(formatted);
            this.$element.trigger("change"); //added this
            this._resetMaskPos(this.$element)
        }
    },

有了上面我添加的两行代码,您应该能够依赖绑定到输入元素的更改事件。

I对这两个人都不起作用。我用我的用户界面。@smemy它对我不起作用。如果我把它的代码图标消失,不会work@LeonardDrapeza如果您使用的是时间选择器,那么就不能使用日期选择器。您必须选择元素。@smemy它实际上是一个datetimepicker,但有一个timepicker的配置,具体是哪个元素?我确实使用了id$'datetimepicker2',我试图提醒一些事情,但它不起作用。它仅适用于$'datetimepicker2'。datetimepicker@LeonardDrapeza,我查看了datetimepicker中的一些示例,它们似乎都将内容包装在其中。然后,当应用datetimepicker时,它会将日历选择器附加到dom中。我会更新答案。
$('#datetimepicker1').closest(".well").next(".bootstrap-datetimepicker-widget").on("click", "*", function () {
    console.log("Changed");
});
    set: function () {
        var formatted = "";
        if (!this._unset) formatted = this.formatDate(this._date);
        if (!this.isInput) {
            if (this.component) {
                var input = this.$element.find("input");
                input.val(formatted);
                input.trigger("change"); // added this
                this._resetMaskPos(input)
            }
            this.$element.data("date", formatted)
        } else {
            this.$element.val(formatted);
            this.$element.trigger("change"); //added this
            this._resetMaskPos(this.$element)
        }
    },