更改 JavaScript 中某些键的按键事件
Altering the keypress event of certain keys in JavaScript
我正在开发一个项目,该项目显示在文本框中按下的每个键的字符代码。
我的问题是,当按下某些键时,即:Shift、Backspace、Space,它们的字符代码显示为:16、8、32。
我希望这些键在按下时保持正常行为。这样space就会在文本框中造成一个space,而backspace会删除字符,依此类推...但是其余的键继续输出它们的字符代码。
我怎样才能完成这个?
只要你...
- 不要在事件对象上调用
preventDefault
方法,并且
- 不要 return
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)元素。
我认为这对你有用。
var elementID = document.getElementById('elementID');
elementID.onkeydown = function(event) {
var key = event.keyCode || event.charCode;
if( key == 32 || key == 8 )
event.preventDefault();
};
您可以只检查密钥并进行相应处理。这是一个演示:
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、backspace 和 space 键,但将记录所有其他键。
我正在开发一个项目,该项目显示在文本框中按下的每个键的字符代码。
我的问题是,当按下某些键时,即:Shift、Backspace、Space,它们的字符代码显示为:16、8、32。
我希望这些键在按下时保持正常行为。这样space就会在文本框中造成一个space,而backspace会删除字符,依此类推...但是其余的键继续输出它们的字符代码。
我怎样才能完成这个?
只要你...
- 不要在事件对象上调用
preventDefault
方法,并且 - 不要 return
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)元素。
我认为这对你有用。
var elementID = document.getElementById('elementID');
elementID.onkeydown = function(event) {
var key = event.keyCode || event.charCode;
if( key == 32 || key == 8 )
event.preventDefault();
};
您可以只检查密钥并进行相应处理。这是一个演示:
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、backspace 和 space 键,但将记录所有其他键。