我有一个使用 data-format 格式化的输入字段HH:mm:ss PP
。单击focus
时间选择器时,输入字段上不会出现,这就是我无法使用onblur
事件的原因。我想要的是喜欢keydown
或keyup
事件,但它似乎在我的情况下不起作用,因为focus
在输入字段中,所以我应该使用什么 jQuery 事件?
问问题
269 次
1 回答
0
change
似乎工作正常:
$("#datepicker").datepicker()
.on("change", function () {
console.log("Changed");
});
示例是datepicker()
,我不确定您的timepicker
实现是什么,因为它不在 jquery(ui) api 中。但它也应该有效。
编辑:在查看您正在使用的 datetimepicker 之后,基于我看到的 DOM datetimepicker()
- 我认为这应该适合您:
$('#datetimepicker1').closest(".well").next(".bootstrap-datetimepicker-widget").on("click", "*", function () {
console.log("Changed");
});
只要确保这是在您的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)
}
},
使用我在上面添加的两行代码,您应该能够依赖change
绑定到input
元素的事件。
于 2013-08-16T16:21:13.643 回答