簡體   English   中英

在使用jQuery輸入之前如何獲取按鍵

[英]How to get keys pressed before enter with jQuery

抱歉,如果您已經問過這個問題,我正在嘗試創建一個應用,用戶在其中掃描條形碼,然后將數據顯示在屏幕上。 我不想使用文本框,因為我不想數據是可編輯的。

到目前為止,我已經設法獲得了Enter鍵,該鍵會自動發送到條形碼的末尾,但似乎無法在之前按下該鍵,因此不勝感激!

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

只是為了澄清我想做的是顯示一個警報框,並在輸入前按下鍵! 例如:ABCD ENTER將顯示警報(“ ABCD”)

謝謝!

UPDATE

因此,我的代碼開始工作了,但是我得到了“ 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);
  }
});

顯然,這還不夠清楚,因此我在下面概述了我的問題:

我從alert(item [counter]);得到的內容:

undefinedKEYS

我想要的是alert(item [counter]);:

KEYS

因此,從undefinedKEYS到僅KEYS,我需要刪除文本“ undefined”。

足夠清楚嗎?

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. 並不是我建議您使用這種方法檢查以前的結果,但是您基本上是將keypress事件中的項目重置為“”。 在事件外設置一次。

  2. which是屬性,而不是方法:

  3. 使用string.fromCharCode從ASCII轉換為字符串char(谷歌搜索將在兩秒鍾內為您提供)。

  4. 使用(e.which || e.keyCode)以確保您在所有瀏覽器上都獲得了密鑰代碼。

例如

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

將粘貼復制到控制台並運行:

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鍵)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM