Czy możliwe jest przechwytywanie keydown na całym świecie na dynamicznie dodawanych wejściach tekstowych?
Używam następującego globalnego jQuery, aby pokazać i ukryć ładowaniediv
dla$.ajax
połączenia:
$(document).ajaxStart(function(){
$("#loading").show();
}
$(document).ajaxStop(function(){
$("#loading").hide();
}
Działa to dobrze, ale nie chcę pokazywać ładowania div dla autouzupełnień, więc dodałem to:
$("input[type=text]").keydown(function(){
if($(this).hasClass('ui-autocomplete-input')) {
window.suppressGlobal = true;
}
});
Następnie, aby zresetowaćsuppressGlobal
dla „normalnego”$.ajax
połączenia, to:
var origAjax = $.ajax;
$.ajax = function() {
if (window.suppressGlobal) {
arguments[0].global = false;
}
origAjax.apply(this, arguments);
window.suppressGlobal = false;
};
To wszystko działa dobrze dla wejść tekstowych, które są zbudowane z ładowaniem stron. Mam jednak kilka sytuacji, w których dane tekstowe są wstawiane dynamicznie po stronie klienta za pomocą jQuery / Javascript, w którym to przypadkukeydown
zdarzenie nie jest powiązane z funkcją globalną. Próbowałem teżon
:
$("input[type=text]").on('keydown', function(){
if($(this).hasClass('ui-autocomplete-input')) {
window.suppressGlobal = true;
}
});
Ale to też nie działa. Czy istnieje sposób na globalne uchwyceniekeydown
zdarzenie niezależnie od tego, kiedy dodano tekst? Czy mogę jakoś globalnie uchwycić dodawanie danych tekstowych do DOM i dołączyć wtedy obsługę zdarzeń?