【问题标题】:Determine if key pressed is writing something - Javascript确定按下的键是否在写东西 - Javascript
【发布时间】:2018-09-02 14:23:07
【问题描述】:

我只想在按下的键正在写东西时运行一个动作,所以它会忽略箭头键、shift 键或 enter 键等。

我正在使用以下脚本,但我想找到改进它的替代方法。

$('body').on('keyup', 'input', function(e) {
  if (e.keyCode >= 48 && e.keyCode <= 57 || e.keyCode >= 65 && e.keyCode <= 90 || e.keyCode >= 97 && e.keyCode <= 122) {
      // do something
  }
});

【问题讨论】:

  • 我们需要更多的上下文。您是否尝试检测用户何时更改文本字段中的文本?
  • 那么问题出在哪里?
  • 问题是我的脚本只包含数字、大写字母和小写字母。 @Kwright02 我只想在输入内容发生变化时运行操作。
  • 没有其他选择。您已经在以最好的方式做到这一点。其他方法不是检查可打印字符,而是检查不可打印字符。没有太大区别。
  • 您可以查看在文本字段上触发的事件

标签: javascript keycode keyup onkeyup


【解决方案1】:

来自cmets:

问题是我的脚本只包含数字、大写字母和小写字母。我只想在输入内容发生变化时运行操作

为了在输入中的文本发生变化时触发事件,您需要定义一个全局变量来保存输入的先前数据。

然后当keyup事件被触发时,你可以检查input_data==new_input_data,然后做你想做的事。

var input_data, new_input_data;
input_data = $("#myinput").val();
new_input_data="";
$('body').on('keyup', 'input', function(e) {
  new_input_data = $("#myinput").val();
  if(input_data!=new_input_data){
      alert("text changed");
      input_data = new_input_data;
    }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="myinput" />

【讨论】:

  • @MustaphaFersaoui 再次更新请检查。使用运行代码 sn -p 并再次检查。
  • 不知道为什么函数外的变量没有考虑进去。给出未定义的值
  • 能否将您的代码发布到jsfiddle.net 并分享回保存的链接,以便我提供帮助。
  • 我想是因为我将它用于 tinyMCE 并在弹出窗口中调用输入。感谢您的宝贵时间
猜你喜欢
  • 1970-01-01
  • 2011-08-01
  • 2011-01-22
  • 2011-12-18
  • 2018-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多