В любое время триггеры time / datepicker изменяют событие каждый раз, когда поле ввода фокусируется даже без изменения содержимого. Как этого избежать?

Как указано в заголовке, я получаю событие изменения каждый раз, когда фокусируюсь на вводимом текстовом поле с прикрепленным маркером даты / времени в любое время. Есть ли способ избежать такого поведения? Поскольку я, очевидно, хочу получить событие изменения, когда я действительно что-то изменяю.

Я вижу это поведение на Firefox и Chrome. Не пробовал IE

2 ответа

Решение

Если это действительно так, достаточно просто где-то вспомнить предыдущее значение и вызывать вашу "реальную" функцию изменения только тогда, когда значение не совпадает.

$("relevant-selector").on("change", function() {
    var $this = $(this),
        val   = $this.val(),
        prev  = $this.data("prevValue");
    if (val !== prev) {
        handleChange();
        $this.data("prevValue", val);
    }
});

Вы также можете сообщить об ошибке разработчикам плагинов. Или, если это открытый исходный код, сообщите об этом, исправьте и отправьте им запрос на извлечение.

@Toksan, я изменил библиотеку, чтобы вызвать событие change(), только когда значение поля ввода действительно изменяется. Пожалуйста, загрузите версию 5.0.2 с ama3.com/anytime и отправьте мне сообщение через мою страницу контактов, чтобы сообщить, как это работает для вас.

Если у вас есть будущие проблемы, вопросы или предложения относительно библиотеки, пожалуйста, отправьте мне сообщение через мою страницу контактов для более быстрого решения.

Другие вопросы по тегам