2016-09-26 60 views
0

我正在研究一个项目,该项目显示在文本框内按下的每个键的字符代码。在JavaScript中更改某些键的按键事件

我的问题是,当某些键,即:Shift键,退格,空间被压下去,他们的字符代码看起来像:16,8,32

我想这些按键来保持其正常的行为按下时。因此,该空格会在文本框中产生空格,而退格将删除该字符,等等......但其余的键将继续输出其字符代码。

我该如何去做到这一点?

回答

1

您可以检查钥匙并相应地进行处理。这里有一个演示:

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,退格键和空格键,但所有其他人将被记录。

+0

谢谢。这工作。 – mattHunting10

+0

@ mattHunting10没问题,乐于帮忙。如果它确实帮助你考虑upvoting,并可能接受:) – Li357

+0

我唯一的其他问题。如何让SHIFT键输出一个字母的大写字母?例如,如果有人按“shit + h”输出73而不是72. – mattHunting10

0

只要你...

  1. 不调用事件对象的preventDefault方法,并
  2. 没有从事件处理程序

返回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)元素。

+0

但是,如果我不打电话给preventDefault方法。然后我会得到钥匙的密码以及与之相关的人物。像65a一样。而不是65. – mattHunting10

+0

@ mattHunting10因此,您希望字符的键码出现在文本框*中,而不是*实际输入中,*除空格,退格键和换档键外*。 –

+0

是的,谢谢你的回应。但上面的人已经得到了解决方案。 – mattHunting10

0

我认为这会对你有用。

var elementID = document.getElementById('elementID'); 

elementID.onkeydown = function(event) { 
    var key = event.keyCode || event.charCode; 

    if(key == 32 || key == 8) 
     event.preventDefault(); 
}; 
+0

我想输出所有密钥的字符代码,除了其中的一些密钥。所以我必须包含preventDefault()以避免输出字符Code和字母65a而不是65.所以这就是为什么你的例子不起作用。 – mattHunting10