【问题标题】:what is right jQuery event for a input field with timepicker带有时间选择器的输入字段的正确jQuery事件是什么
【发布时间】:2013-08-17 02:12:39
【问题描述】:

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

【问题讨论】:

    标签: ajax jquery events


    【解决方案1】:

    change 似乎工作正常:

    Fiddle

      $("#datepicker").datepicker()
      .on("change", function () {
          console.log("Changed");
      });
    

    示例是 datepicker(),我不确定您的 timepicker 实现是什么,因为它不在 jquery(ui) api 中。但它也应该可以工作。


    编辑:根据datetimepicker() 看到的DOM,查看您正在使用的日期时间选择器后,我认为这应该适合您:

    Fiddle

    $('#datetimepicker1').closest(".well").next(".bootstrap-datetimepicker-widget").on("click", "*", function () {
        console.log("Changed");
    });
    

    请确保这是在您拨打 datetimepicker() 之后。请注意,这将在您的日历/时间选择器中的任何点击时触发,即使它是对已选择的内容的点击(无变化)。

    如果需要,您可以存储输入的最后一个值,然后在继续使用此事件回调函数之前检查它是否已更改。如果确实发生了变化,请务必更新您在其中保存“最后一个值”的变量......类似于this


    如果可能,最好的选择实际上是修改 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)
            }
        },
    

    使用我上面添加的两行代码,您应该能够依赖绑定到 input 元素的 change 事件。

    【讨论】:

    • 我也不工作。我的用户界面使用tarruda.github.io/bootstrap-datetimepicker
    • @smemy 它对我不起作用。如果我把它的代码图标消失并且不会工作
    • @LeonardDrapeza 好吧,如果您使用的是时间选择器,则不能使用 datepicker()。您必须选择元素。
    • @smemy 实际上是一个日期时间选择器,但是有一个时间选择器的配置,有什么特别的元素?我确实使用了 id $('#datetimepicker2') 并且我尝试了 alert() 一些东西,但它不起作用。它仅适用于$('#datetimepicker2').datetimepicker
    • @LeonardDrapeza,我查看了 datetimepicker 中的一些示例,似乎它们都将内容包装在 .well 中,然后当应用 datetimepicker() 时,它会将日历选择器附加到 dom好之后。我会更新答案。
    猜你喜欢
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 2016-10-31
    • 2017-07-15
    • 1970-01-01
    • 2022-10-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多