如何在使用jQuery输入之前按下键

时间:2015-05-06 14:53:30

标签: javascript jquery

很抱歉,如果已经提出这个问题,我正在尝试创建一个用户扫描条形码的应用程序,然后数据显示在屏幕上。我不想使用文本框,因为我不希望数据可以编辑。

到目前为止,我已经设法获得了在条形码结束时自动发送的回车键,但似乎无法按下按键,任何帮助都会受到大力赞赏!

var item = "";
$(document).keypress(function(e) {
  if(e.which == 13) {
    alert(item);
  }else{
    item  = item + e.which();
  }
});

为了澄清我想要做的是在输入之前显示一个按下按键的警告框!例如:A B C D ENTER将显示警告(" ABCD")

谢谢!

更新

所以让我的代码工作,但我得到了" undefinedTHEKEYSPRESEDHERE"作为回报:

var counter = 0;
var item = [];
$(document).keypress(function(e) {
  if(e.which == 13) {
    alert(item[counter]);
    counter++;
  }else{
    item[counter] = item[counter] + String.fromCharCode(e.which);
  }
});

显然这还不够清楚,所以我在下面概述了我的问题:

我从警报中获得的内容(项目[计数器]);:

undefinedKEYS

我想要什么警报(项目[柜台]);:

KEYS

所以从undefinedKEYS到KEYS我需要删除文本" undefined"。

足够清楚?

3 个答案:

答案 0 :(得分:3)

e.which()更改为String.fromCharCode(e.which)

http://jsfiddle.net/8msksn3a/

var item = "";
$(document).keypress(function(e) {
  if(e.which == 13) {
    alert(item);
  }else{
    item  = item + String.fromCharCode(e.which);
  }
});

答案 1 :(得分:1)

  1. 不是我推荐这种检查以前结果的方法,但你基本上是在keypress事件中将项目重置为“”。在活动结束后设置一次。

  2. which是属性,不是方法:

  3. 使用string.fromCharCode从ASCII转换为字符串字符(谷歌搜索会在两秒钟内为您提供)。

  4. 使用(e.which || e.keyCode)确保您获得所有浏览器的密码。

  5. e.g。

    var item = "";
    $(document).keypress(function(e) {
      if((e.which || e.keyCode) == 13) {
        alert(item);
      }else{
        item  = item + String.fromCharCode(e.which || e.keyCode);
      }
    });
    

答案 2 :(得分:1)

将粘贴复制到控制台并运行:

var keys = [];
$(document).keypress(function(e) {
  var keyChar;
  if(e.which == 13) {
    console.log( keys.join('') );
    keys.length = 0;
  }
  else{
    keyChar = String.fromCharCode(e.which);
    if( keyChar )
      keys.push( keyChar );
  }
});

此技术不会显示没有分配文本字符的键(例如F1-F12键)