改变JavaScript中某些键的按键事件

时间:2016-09-26 01:18:05

标签: javascript events keypress keyboard-events

我正在开发一个项目,该项目显示在文本框中按下的每个键的字符代码。

我的问题是,当某些键,即:Shift,Backspace,Space被按下时,它们的字符代码显示为:16,8,32。

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

我怎样才能完成这项工作?

3 个答案:

答案 0 :(得分: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,退格键和空格键,但会记录所有其他键。

答案 1 :(得分:0)

只要你......

  1. 不要在事件对象上调用preventDefault方法,
  2. 不从事件处理程序
  3. 返回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)元素。

答案 2 :(得分:0)

我认为这对你有用。

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

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

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