¿Es posible capturar keydown globalmente en entradas de texto agregadas dinámicamente?
Estoy usando el siguiente jQuery global para mostrar y ocultar una cargadiv
para$.ajax
llamadas:
$(document).ajaxStart(function(){
$("#loading").show();
}
$(document).ajaxStop(function(){
$("#loading").hide();
}
Esto funciona bien, pero no quiero mostrar el div de carga para autocompletar, así que agregué esto:
$("input[type=text]").keydown(function(){
if($(this).hasClass('ui-autocomplete-input')) {
window.suppressGlobal = true;
}
});
Entonces, para restablecersuppressGlobal
para "normal"$.ajax
llama, esto:
var origAjax = $.ajax;
$.ajax = function() {
if (window.suppressGlobal) {
arguments[0].global = false;
}
origAjax.apply(this, arguments);
window.suppressGlobal = false;
};
Todo esto funciona bien para las entradas de texto que se construyen con carga de página. Sin embargo, tengo varias situaciones en las que las entradas de texto se insertan dinámicamente en el lado del cliente utilizando jQuery / Javascript, en cuyo casolakeydown
El evento no se enlaza a la función global.. Yo tambien lo intentéon
:
$("input[type=text]").on('keydown', function(){
if($(this).hasClass('ui-autocomplete-input')) {
window.suppressGlobal = true;
}
});
Pero eso tampoco funciona. ¿Hay alguna manera de que pueda capturar globalmente elkeydown
evento, independientemente de cuándo se añadió la entrada de texto? ¿Podría capturar globalmente la adición de entradas de texto al DOM y adjuntar el controlador de eventos?