在输入上启动时间选择器时更改事件触发

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
    }
  });
});

也许您可以使用另一个事件,但周围有许多时间选择器插件,所以不确定您使用的是哪个。

对我来说,这似乎是插件中的一个错误