jQuery textbox change event doesn't fire until textbox loses focus?

后端 未结 7 1074
执念已碎
执念已碎 2020-12-04 06:06

I found that jQuery change event on a textbox doesn\'t fire until I click outside the textbox.

HTML:


         


        
7条回答
  •  感动是毒
    2020-12-04 06:48

    Binding to both events is the typical way to do it. You can also bind to the paste event.

    You can bind to multiple events like this:

    $("#textbox").on('change keyup paste', function() {
        console.log('I am pretty sure the text box changed');
    });
    

    If you wanted to be pedantic about it, you should also bind to mouseup to cater for dragging text around, and add a lastValue variable to ensure that the text actually did change:

    var lastValue = '';
    $("#textbox").on('change keyup paste mouseup', function() {
        if ($(this).val() != lastValue) {
            lastValue = $(this).val();
            console.log('The text box really changed this time');
        }
    });
    

    And if you want to be super duper pedantic then you should use an interval timer to cater for auto fill, plugins, etc:

    var lastValue = '';
    setInterval(function() {
        if ($("#textbox").val() != lastValue) {
            lastValue = $("#textbox").val();
            console.log('I am definitely sure the text box realy realy changed this time');
        }
    }, 500);
    

提交回复
热议问题