【问题标题】:Javascript : How to get the last two characters typed into a textarea?Javascript:如何将最后两个字符输入文本区域?
【发布时间】:2011-03-28 19:33:43
【问题描述】:

获取文本区域框中输入的最后两个字符的最佳方法是什么?

我需要输入最后两个字符而不是整个字符串的最后两个字符。

感谢您的帮助!

【问题讨论】:

    标签: javascript jquery string textarea


    【解决方案1】:

    您需要在 textarea 上捕获 keypress 事件,然后记录被按下的键。请注意,这将捕获箭头键、shift、alt 等,因此如果您只想要字符,则需要将它们过滤掉。

    简单示例:

    var keyPresses = [];
    textarea.onkeypress = function(ev){
       ev = ev || window.event;
    
       var key = ev.keyCode || ev.which;
       keyPresses.push(key);
    }
    

    【讨论】:

      【解决方案2】:

      这是一个使用 jQuery 进行的演示,同时显示最后输入的两个字符:http://jsfiddle.net/Ender/5gUHb/

      来源:

      var keys = [];
      $('#target').keypress(function(e) {
          keys.unshift(e.which);
          update();
      });
      
      function update() {
             $('#last')
                 .prepend($('<li/>').text(String.fromCharCode(keys[0])))
                 .children(':eq(2)').remove();
      }
      

      此演示捕获文本区域上的 keypress 事件,将值移到数组上(因为索引表示自按下该键以来已按下的键数),然后更新显示。

      显示更新只是将数组中的第一个值推送到 &lt;ul&gt; 的顶部,并删除列表中索引 2 处的子项(如果有)。

      另外请注意,由于 jQuery 处理 .keypress() 的方式,您不必过滤掉修饰符或箭头键。

      更新 请参阅 Tim Down 对我的回答的评论,了解应该进行哪些过滤。根据 Chrome 中的快速测试,我最初的注释是错误的。

      【讨论】:

      • 实际上你必须过滤掉不可打印的键。哪些键产生keypress 事件因浏览器而异。例如,Firefox 会为大多数不可打印的键生成 keypress 事件,而 jQuery 将为大多数键提供 0 的 which 值,但也有一些例外,例如退格会产生 8 的 which 值。是其他变体,我建议参考unixpapa.com/js/key.html 了解全部详细信息。 jQuery 本身隐藏了非常少的复杂性。
      • @Tim - 感谢您指出这一点,我已经更新了我的答案,以便让人们参考您的评论。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-09-13
      • 1970-01-01
      • 2016-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-26
      相关资源
      最近更新 更多