我有一个使用数据格式HH:mm:ss PP
格式化的输入字段。单击时间戳时,输入字段上的focus
似乎不会显示为什么我无法使用onblur
事件。我想要的是keydown
或keyup
事件,但似乎在我的情况下不起作用,因为focus
在输入字段中出来所以我应该使用什么jQuery事件?
答案 0 :(得分:0)
change
似乎工作正常:
$("#datepicker").datepicker()
.on("change", function () {
console.log("Changed");
});
示例是datepicker()
,我不确定你的timepicker
实现是什么,因为它不在jquery(ui)api中。但它应该也可以。
编辑:在查看您正在使用的datetimepicker之后,基于我datetimepicker()
看到的DOM - 我认为这应该适合您:
$('#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)
}
},
使用上面添加的两行,您应该能够依赖绑定到change
元素的input
事件。