我正在研究一個項目,該項目顯示在文本框內按下的每個鍵的字符代碼。在JavaScript中更改某些鍵的按鍵事件
我的問題是,當某些鍵,即:Shift鍵,退格,空間被壓下去,他們的字符代碼看起來像:16,8,32
我想這些按鍵來保持其正常的行爲按下時。因此,該空格會在文本框中產生空格,而退格將刪除該字符,等等......但其餘的鍵將繼續輸出其字符代碼。
我該如何去做到這一點?
我正在研究一個項目,該項目顯示在文本框內按下的每個鍵的字符代碼。在JavaScript中更改某些鍵的按鍵事件
我的問題是,當某些鍵,即:Shift鍵,退格,空間被壓下去,他們的字符代碼看起來像:16,8,32
我想這些按鍵來保持其正常的行爲按下時。因此,該空格會在文本框中產生空格,而退格將刪除該字符,等等......但其餘的鍵將繼續輸出其字符代碼。
我該如何去做到這一點?
您可以檢查鑰匙並相應地進行處理。這裏有一個演示:
document.getElementById("test-textbox").addEventListener("keypress", function(event) {
var code = event.keyCode || event.which;
if(code === 16 || code === 8 || code === 32) //check if space, shift, or backspace
return; //if yes, allow
console.log(code); //if not, log value
event.preventDefault(); //prevent entry
});
<input type="text" id="test-textbox">
這將允許按住shift,退格鍵和空格鍵,但所有其他人將被記錄。
只要你...
preventDefault
方法,並返回false
...你應該精細。
尤其是處理器...
function showCharCode(event) {
// NOTE: Don’t call `event.preventDefault()` here.
document.querySelector('.char-code').textContent = event.charCode;
// NOTE: Don't return false here.
}
...仍將傳播事件默認文本框(或輸入,或CONTENTEDITABLE)元素。
但是,如果我不打電話給preventDefault方法。然後我會得到鑰匙的密碼以及與之相關的人物。像65a一樣。而不是65. – mattHunting10
@ mattHunting10因此,您希望字符的鍵碼出現在文本框*中,而不是*實際輸入中,*除空格,退格鍵和換檔鍵外*。 –
是的,謝謝你的迴應。但上面的人已經得到了解決方案。 – mattHunting10
我認爲這會對你有用。
var elementID = document.getElementById('elementID');
elementID.onkeydown = function(event) {
var key = event.keyCode || event.charCode;
if(key == 32 || key == 8)
event.preventDefault();
};
我想輸出所有密鑰的字符代碼,除了其中的一些密鑰。所以我必須包含preventDefault()以避免輸出字符Code和字母65a而不是65.所以這就是爲什麼你的例子不起作用。 – mattHunting10
謝謝。這工作。 – mattHunting10
@ mattHunting10沒問題,樂於幫忙。如果它確實幫助你考慮upvoting,並可能接受:) – Li357
我唯一的其他問題。如何讓SHIFT鍵輸出一個字母的大寫字母?例如,如果有人按「shit + h」輸出73而不是72. – mattHunting10