【问题标题】:jQuery - Detect specific word with .keypress functionjQuery - 使用 .keypress 函数检测特定单词
【发布时间】:2014-05-29 16:44:18
【问题描述】:

我一直在尝试让 jQuery 检测键盘上一个接一个地输入的多个字母。

实际上,我想要实现的只是使用 .keypress 函数来检测单词而不是单个字符。现在,我不能同时输入一个单词并按下所有键,所以我必须编写一个程序让 jQuery 记住我之前输入的字母,所以如果我写“test”,它会记住“t ,e 和 s" 在我输入最后一个 "t" 之前,这将使 if 条件成真。

这是我尝试过的,但我不知道如何存储字符(基本上就像键盘记录器,但只是一个单词,将用于打开应用程序):

$(document).keypress(function(e) {
  if( e.ctrlKey && ( e.which === 46 ) ) {
    alert('Ctrl and DEL pressed!');
  }
});

通过这种方式,我设法让 jQuery 识别一个组合键,但目前我只知道这些。

谁能帮我弄清楚如何检测整个世界?

非常感谢。

【问题讨论】:

  • 你是如何定义一个词的?寻找空格字符有用吗?
  • 应用程序有点像“帮助中心”,所以最简单的检测词就是“帮助”。不需要涉及空间:)
  • 所以你有一个你要找的词的白名单?
  • 还没有,我认为可以像上面的示例那样完成。示例: ( e.which === 46 ) && ( e.which === 55 ) && ( e.which === 99 ) 等等(但这只会让我同时按下所有键)

标签: javascript jquery function


【解决方案1】:

根据您的 cmets:

我认为解决此问题的最佳方法是获取文本并检查它是否包含白名单中的项目。

否则,如果您用户复制粘贴,或移动到另一个输入,您可能会错过一些字符。我也会犹豫是否在 keyup 上执行此操作,但取决于您的白名单等。

这样的事情可能会奏效。

$( "#target" ).keyup(function() {

     var inputText = $( "#target" ).text();
     whitelist.forEach(function(){
          if(inputText.indexOf(aWhiteListItem) > 0)
          {
              alert("Found it");
          }
     });
  });

If you are curious about waiting for a delay, there are lots of great SO posts

【讨论】:

  • 谢谢,工作得很好,只需要稍微调整一下,因为我想在整个身体上使用它(网站上的任何地方,无需集中注意力或链接到输入) :)
猜你喜欢
  • 2013-08-12
  • 1970-01-01
  • 1970-01-01
  • 2015-11-09
  • 1970-01-01
  • 2013-04-01
  • 2011-12-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多