【问题标题】:detect paste on input box检测输入框上的粘贴
【发布时间】:2010-12-08 18:01:48
【问题描述】:

我有输入框。页面加载时,我使用鼠标右键单击输入框并从上下文菜单中选择粘贴。

粘贴文本时,在粘贴发生后立即使用哪个事件来提醒文本?

我使用“输入粘贴”但在 IE 中不起作用

【问题讨论】:

    标签: jquery


    【解决方案1】:

    您可以像这样绑定这些事件:

        $(document).ready(function() {
            $("#Text1").bind('copy', function(e) {
                alert('copying text!');
            });
            $("#Text1").bind('paste', function(e) {
                alert('pasting text!');
            });
            $("#Text1").bind('cut', function(e) {
                alert('cut text!');
            });
        });
    

    【讨论】:

    • 我很想听听选民反对的原因是什么。谢谢。
    • 谢谢你!这帮助我完成了我目前正在从事的项目。
    • 非常有用,但请注意这些事件是在剪切/粘贴操作发生之前触发的,因此在您的 alert() 完成之前不会更改文本框的值。我发现在剪切/粘贴/撤消操作后触发 onkeyup 很有用。
    • 粘贴效果很好!我第二个@MagnusSmith,我发现了同样的事情。我只是设置了一个变为 true 的 var,并且在 keydown 事件中,如果该 var 为 true,我运行我的代码来查看文本,然后将粘贴重置为 false,直到它们再次粘贴。 :) 谢谢!
    【解决方案2】:

    在大多数情况下都可以使用的一种技巧是挂钩到控件的onchange,同时还将控件的初始文本存储在一个单独的变量中。每当新文本的长度比原始文本长一个字符以上时,您都可以假设粘贴了一些内容。显然,如果有人粘贴了一个字符的字符串,这将不起作用,但人们不会经常这样做。

    【讨论】:

    • 多么可怕的想法。不用再做太多网络工作真是太好了。
    • 您是否将自己的答案称为一个可怕的想法?
    • @KasperSkov:嗯,四年前并不完全是“刚刚”。
    • 哈!最后有点幽默。 (现在我将因未回答而受到评论)
    【解决方案3】:

    现在有更好的方法。仍然不是所有浏览器都支持这个 2011,但这会改变

    oninput event handler

    oninput fixes

    more fixes

    and other crossbrowser jquery solutions

    【解决方案4】:

    使用 setInterval(javascript 函数)设置了一个动作,它每 200 毫秒检查一次输入内容。如果它被改变,那么过去或打字发生了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-15
      相关资源
      最近更新 更多