Ctrl+V ( Paste ) triggers jQuery's keyup function TWICE

不问归期 提交于 2019-12-24 01:45:10

问题


How to make Ctrl+V or Paste not trigger the keyup function TWICE?

This is a problem for me because I made an AutoComplete functionality, and it displays the same data twice when i paste in a textbox. I hope this makes more sense now.

EDIT:

Okay guys, I have found out how to detect Ctrl+V by $('#this-id').bind('paste', function() {});

But now another follow up question is how to combine it with keyup so that when paste is pressed, keyup wont trigger anymore.


回答1:


Okay guys, Thank you all for your answers but as I go through some reading, a lot of blogs say this: "IF you're implementing an autocomplete functionality, DON'T rely on 'keyup' function"

So I changed my code to $('#this-id').bind('input', function() {});

And it worked, I don't have to worry now about pasting or anything else. I hope this helps to others too.




回答2:


you can try this

$(window).on('keyup', function (event) {
    if (!event.ctrlKey) {
        /* here your code for all keys besides CTRL ;-) */
    }
});



回答3:


You could use underscore's debounce to set delay for reading the keyup event.

See the working code at:

JSFiddle

JS:

var count = 0;
function lookup() {
    $('div#test').html($('input.text').val());
    count++;
    $('div#count').html(count);
}

$(document).keyup( _.debounce(lookup, 250, true) );

HTML:

<div>
    <input type="text">
</div>

Input: <div id="test"></div>
Keyup Count: <div id="count"></div>

underscore.js from:

http://documentcloud.github.com/underscore/underscore-min.js



来源:https://stackoverflow.com/questions/22778854/ctrlv-paste-triggers-jquerys-keyup-function-twice

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!