Search code examples
jquerykeypresstextinputdynamic-forms

Jquery .keypress on a dynamically added input


I am currently adding an input via a .click event and then wanting to listen to any keypress that occurs on this input. However, the appended isn't firing any events after it is inserted (i.e. blur, keypress, focus). Does anyone have any suggestions? Thanks in advance!

$("#recipientsDiv").click(function(){
    $(this).append('< input type="text" id="toInput" class="inlineBlockElement" style="border:0px none #ffffff; padding:0px; width:20px; overflow:hidden;" />')
    $("#toInput").focus();
});
$("input").keypress(function(e){
    var inputStr = $(this).html();
    $("#inputCopier").text(inputStr);
    var newWidth = $("#inputCopier").innerWidth;
    $(this).css("width", newWidth);
});
$("#toInput").blur(function(){
    $("#toInput").remove();
});

I did try .keyup .keydown as well, they don't work.


Solution

  • In order to capture blur/focus events, why not add the handler to the created element before adding it to DOM?

    $('#recipientsDiv').click (function() 
    {
        $('< input type="text" id="toInput" class="inlineBlockElement" style="border:0px none #ffffff; padding:0px; width:20px; overflow:hidden;" />')
            .keypress (function (e) { ... })
            .blur (function (e) { $(this).remove () })
            .appendTo ($(this))
            .focus ()
        ;
    });