Итак, у меня есть форма, где двойной щелчок по полю вызывает настраиваемое модальное окно. Кнопки для «Сохранить» и «Отмена» в модальном окне имеют события «щелчка», которые вызывают hide()
на уровне модального окна. Однако некоторые из наших пользователей, естественно, дважды щелкают вещи. Двойной щелчок на кнопках сохранения или отмены запускает событие клика и скрывает модальное окно, но также вызывает событие двойного щелчка поля, которое находилось под модальным окном, в результате чего модальное окно отображалось снова. Я знаю, используя setTimeOut()
, и задержка hide()
модального окна решит проблему, но я предпочитаю не ухудшать отзывчивость интерфейса, если это возможно. Какие-либо предложения?Предотвращение события двойного щелчка на нижнем уровне при двойном щелчке скрыть более высокий уровень
Вот скрипка, которая обычно объясняет проблему. https://jsfiddle.net/e51rc24j/4/
$(function() {
$(".field").on("dblclick", function(ev) {
$(".hoverlayer").show();
});
$(".hoverlayer").on("click", function(ev) {
var thisLayer = this;
$(thisLayer).hide();
/* PUTTING IN DELAY ON HIDE SOLVES PROBLEM BUT I PREFER TO NOT DELAY UI RESPONSIVENESS IF POSSIBLE
setTimeout(function(){
$(thisLayer).hide();
}, 300);*/
});
});
Я тоже следовал той же логике. Я думал, что положить в stopImmediatePropagation будет работать, но при проверке деталей события заметил, что исходным триггером для события был двойной щелчок по полю. К сожалению, форма, которая ниже модальной, огромна. Существует более 100 полей, поэтому невозможно предотвратить появление модального окна (и связанных с ним кнопок сохранения и отмены) над некоторым полем формы. Спасибо, что посмотрели на эту проблему. –