我正在研究一个项目,该项目显示在文本框内按下的每个键的字符代码。在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