【问题标题】:How to use "input propertychange" events to capture just copy and paste by mouse如何使用“input propertychange”事件来捕获鼠标复制和粘贴
【发布时间】:2013-11-16 22:14:24
【问题描述】:

对于我使用的 keyup 选项,我想捕获 textarea 中发生的更改(keyup,以及复制和粘贴):

$("textarea").keyup(function(){
   // ajax call here
});

我添加了这个来捕捉鼠标粘贴或剪切,然后在 textarea 上触发 keyup 事件:

$("textarea").on('input propertychange', function() {
    $(this).trigger(keyup);
});

这里的问题是,如果我按下键盘上的一个键,我会收到 2 个 ajax 调用,因为第二个函数也捕获 keyup 事件。

有没有办法防止$("textarea").on('input propertychange'... 检测到按键?

【问题讨论】:

  • 为什么不直接使用第二个函数?!
  • @TamerShlash 因为第二个事件不适用于所有浏览器

标签: javascript textarea jquery


【解决方案1】:

为什么不测试这个简化?当我测试你的代码时,在“input propertychange”事件中检测到keyup没有成功。

你忽略 keyup 事件:

//$("textarea").keyup(function(){
//// ajax call here
//});

只捕获这个(用这个做ajax调用):

$("textarea").on('input propertychange', function() {
  //$(this).trigger(keyup);
  // do ajax call here
});

后者只忽略一些控制键,即没有相应字符输入的键。

【讨论】:

  • 我发现在iOS11中使用'input propertychange',当我删除最多5个字符时,它会在光标和最后一个字母之间显示一些空格。
【解决方案2】:

在做了一些研究后,我在这里找到了解决方案:

How to run a function once when binding to multiple events that all trigger in Javascript?

我认为这是在我的情况下防止两次调用事件的最佳解决方案

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-17
    • 2023-03-30
    • 1970-01-01
    相关资源
    最近更新 更多