Можно ли глобально зафиксировать нажатие клавиш на динамически добавляемых текстовых вводах?
Я использую следующий глобальный jQuery, чтобы показать и скрыть загрузкуdiv
за$.ajax
звонки:
$(document).ajaxStart(function(){
$("#loading").show();
}
$(document).ajaxStop(function(){
$("#loading").hide();
}
Это работает нормально, но я не хочу показывать загрузочный div для автозаполнения, поэтому я добавил это:
$("input[type=text]").keydown(function(){
if($(this).hasClass('ui-autocomplete-input')) {
window.suppressGlobal = true;
}
});
Затем, чтобы сброситьsuppressGlobal
для "нормального"$.ajax
звонки, это:
var origAjax = $.ajax;
$.ajax = function() {
if (window.suppressGlobal) {
arguments[0].global = false;
}
origAjax.apply(this, arguments);
window.suppressGlobal = false;
};
Это все хорошо работает для ввода текста, который построен с загрузкой страницы. Однако у меня есть несколько ситуаций, когда ввод текста динамически вставляется на стороне клиента с использованием jQuery / Javascript, и в этом случаеkeydown
событие не привязывается к глобальной функции, Я тоже пробовалon
:
$("input[type=text]").on('keydown', function(){
if($(this).hasClass('ui-autocomplete-input')) {
window.suppressGlobal = true;
}
});
Но это тоже не работает. Есть ли способ, которым я могу захватить глобальноkeydown
событие независимо от того, когда ввод текста был добавлен? Могу ли я каким-то образом глобально зафиксировать добавление текстовых входов в DOM и затем присоединить обработчик событий?