【问题标题】:Detect the future text during keypress event在按键事件期间检测未来的文本
【发布时间】:2013-04-01 21:07:57
【问题描述】:

我有一个可编辑的 div,我需要在输入最新键之前将输入的文本与其内容进行比较。

例如: 上一篇:普密 新文本:Bhumik

这是正在键入的 K 我应该知道内容已更改。这种检测需要在 keyPress 事件上进行。

但是,当我在每次按键时 console.log div 的 html 时,最终的 console.log 是“Bhumi”,即。在“k”键上,内容仍然没有注册 K。这仅在 keyup 上添加。无论如何,我可以检测到未来的内容可能是什么,以便在每次按键时我都会得到我在 keyup 上的内容???

另外,我处理的不是一行而是多行。

编辑 ::: 我不仅需要输入的字符。假设我有 10 行,并且我可以在每次按键时预测将在 keyup 处出现的行的最终内容,然后将之前的文本与未来预测的文本进行比较,我可以知道用户当前在哪一行输入。

【问题讨论】:

  • 你可以从event.which属性中获取类型字符

标签: javascript jquery keyboard keypress


【解决方案1】:

您可以从事件对象中读取按下的键。

var code = (e.keyCode ? e.keyCode : e.which);
if(code == 13) { //Enter keycode
    //Do something
}

(见jQuery Event Keypress: Which key was pressed?

【讨论】:

    【解决方案2】:

    试试这个代码..

    $("#divId").keypress(function (e) {
                var keycode = e.keycode ? e.keycode : e.which;         
                  }
            });
    

    您可以使用 keypress 、keydown 或 keyup。有关 Javascript 按键事件的更多信息请点击 here

    【讨论】:

      【解决方案3】:

      您可以尝试使用.on() 处理程序处理多个嵌套键事件:

      $('div').on('keypress keyup keydown', function(){
         console.log($(this).text());
      });
      

      【讨论】:

        【解决方案4】:

        您可以通过获取新字符将被插入的位置来生成未来值:

        $('input').bind('keypress',function (){
            var value = e.target.value,
                idx = e.target.selectionStart,
                key = e.key;
                value =  value.slice(0, idx) + key + value.slice(idx + Math.abs(0));
            return yourfunction(value);
        });
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-06-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-01-07
          相关资源
          最近更新 更多