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

后端 未结 7 1056
执念已碎
执念已碎 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);
    
    0 讨论(0)
  • 2020-12-04 06:54
    $(this).bind('input propertychange', function() {
            //your code here
        });
    

    This is works for typing, paste, right click mouse paste etc.

    0 讨论(0)
  • 2020-12-04 06:56

    On modern browsers, you can use the input event:

    DEMO

    $("#textbox").on('input',function() {alert("Change detected!");});
    
    0 讨论(0)
  • 2020-12-04 07:03
    if you write anything in your textbox, the event gets fired.
    code as follows :
    

    HTML:

    <input type="text" id="textbox" />
    

    JS:

    <script type="text/javascript">
      $(function () {
          $("#textbox").bind('input', function() {
          alert("letter entered");
          });
       });
    </script>
    
    0 讨论(0)
  • 2020-12-04 07:05

    Reading your comments took me to a dirty fix. This is not a right way, I know, but can be a work around.

    $(function() {
        $( "#inputFieldId" ).autocomplete({
            source: function( event, ui ) {
                alert("do your functions here");
                return false;
            }
        });
    });
    
    0 讨论(0)
  • 2020-12-04 07:06

    Try this:

    $("#textbox").bind('paste',function() {alert("Change detected!");});
    

    See demo on JSFiddle.

    0 讨论(0)
提交回复
热议问题