在输入上启动时间选择器时更改事件触发
Change event firing when initiating the time picker on inputs
在我的代码中,我将输入附加到页面中呈现的 div,如下所示:
$("#output-area").append("<input type='text' class='timepicker' /><input type='text class='timepicker' />
追加后,我像这样启动时间选择器:
$('.timepicker').timepicker({
timeFormat: 'h:mm p',
interval: 30,
minTime: '12:00am',
maxTime: '11:30pm',
defaultTime: '9:00am',
dynamic: false,
dropdown: true,
scrollbar: true,
change: function(){
console.log("triggered");
}
});
奇怪的是,当我创建时间选择器时,更改事件在它们添加到 DOM 的那一刻被触发。我认为仅当输入值 changed vs created.
时才会触发 change 事件
在不修改插件本身的情况下,您可以在循环中初始化并在每个实例中为 isInit
之类的东西设置一个标志,这样您就不会对初始调用做出反应:
$('.timepicker').each(function() {
var isInit = true;
$(this).timepicker({
timeFormat: 'h:mm p',
.....
change: function() {
if (!isInit) {
console.log("triggered");
}
isInit = false
}
});
});
也许您可以使用另一个事件,但周围有许多时间选择器插件,所以不确定您使用的是哪个。
对我来说,这似乎是插件中的一个错误
在我的代码中,我将输入附加到页面中呈现的 div,如下所示:
$("#output-area").append("<input type='text' class='timepicker' /><input type='text class='timepicker' />
追加后,我像这样启动时间选择器:
$('.timepicker').timepicker({
timeFormat: 'h:mm p',
interval: 30,
minTime: '12:00am',
maxTime: '11:30pm',
defaultTime: '9:00am',
dynamic: false,
dropdown: true,
scrollbar: true,
change: function(){
console.log("triggered");
}
});
奇怪的是,当我创建时间选择器时,更改事件在它们添加到 DOM 的那一刻被触发。我认为仅当输入值 changed vs created.
时才会触发 change 事件在不修改插件本身的情况下,您可以在循环中初始化并在每个实例中为 isInit
之类的东西设置一个标志,这样您就不会对初始调用做出反应:
$('.timepicker').each(function() {
var isInit = true;
$(this).timepicker({
timeFormat: 'h:mm p',
.....
change: function() {
if (!isInit) {
console.log("triggered");
}
isInit = false
}
});
});
也许您可以使用另一个事件,但周围有许多时间选择器插件,所以不确定您使用的是哪个。
对我来说,这似乎是插件中的一个错误