[英]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)
。
var item = "";
$(document).keypress(function(e) {
if(e.which == 13) {
alert(item);
}else{
item = item + String.fromCharCode(e.which);
}
});
並不是我建議您使用這種方法檢查以前的結果,但是您基本上是將keypress事件中的項目重置為“”。 在事件外設置一次。
which
是屬性,而不是方法:
使用string.fromCharCode
從ASCII轉換為字符串char(谷歌搜索將在兩秒鍾內為您提供)。
使用(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.