Можно ли глобально зафиксировать нажатие клавиш на динамически добавляемых текстовых вводах?

Я использую следующий глобальный 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 и затем присоединить обработчик событий?

Ответы на вопрос(1)

Ваш ответ на вопрос