Run javascript function when user finishes typing instead of on key up?

前端 未结 29 2023
我寻月下人不归
我寻月下人不归 2020-11-22 04:03

I want to trigger an ajax request when the user has finished typing in a text box. I don\'t want it to run the function on every time the user types a letter because that wo

29条回答
  •  一向
    一向 (楼主)
    2020-11-22 04:54

    Wow, even 3 comments are pretty correct!

    1. Empty input is not a reason to skip function call, e.g. I remove waste parameter from url before redirect

    2. .on ('input', function() { ... }); should be used to trigger keyup, paste and change events

    3. definitely .val() or .value must be used

    4. You can use $(this) inside event function instead of #id to work with multiple inputs

    5. (my decision) I use anonymous function instead of doneTyping in setTimeout to easily access $(this) from n.4, but you need to save it first like var $currentInput = $(this);

    EDIT I see that some people don't understand directions without the possibility to copy-paste ready code. Here you're

    var typingTimer;
    //                  2
    $("#myinput").on('input', function () {
        //             4     3
        var input = $(this).val();
        clearTimeout(typingTimer);
        //                           5
        typingTimer = setTimeout(function() {
            // do something with input
            alert(input);
        }, 5000);      
    });
    

提交回复
热议问题