Ctrl + V(粘贴)触发jQuery的keyup函数TWICE

时间:2014-04-01 06:56:32

标签: javascript jquery keyup

如何使 Ctrl + V 或粘贴不会触发keyup功能TWICE?

这对我来说是个问题,因为我制作了自动完成功能,当我粘贴到文本框中时,它会显示两次相同的数据。我希望现在更有意义。

编辑:

好的,我已经找到了如何通过$('#this-id').bind('paste', function() {});检测 Ctrl + V

但现在另一个跟进问题是如何将其与keyup结合使用,以便在按下pastekeyup不再触发。

3 个答案:

答案 0 :(得分:7)

好的伙计们,谢谢大家的答案,但在我阅读时,很多博客都说:“如果您正在实施自动完成功能,请不要依赖'keyup'功能< /强>“

所以我将代码更改为$('#this-id').bind('input', function() {});

它有效,我现在不必担心粘贴或其他任何事情。我希望这对其他人也有帮助。

答案 1 :(得分:0)

你可以试试这个

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

答案 2 :(得分:0)

您可以使用下划线的去抖动来设置读取键盘事件的延迟。

请参阅以下工作代码:

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>

fromcore.js来自:

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