目前我正在为项目开发一个功能,并且出现event.keyCode对“on input”触发器不起作用。我正在使用Google Chrome 31和jQuery 1.10.2。
以下是我在方法中尝试的内容:
input.on('input', function(event){
console.log("event.charCode: " + event.charCode);
console.log("event.keyCode: " + event.keyCode);
console.log("event.which: " + event.which);
console.log("window.event ? event.keyCode : event.which: " + window.event ? event.keyCode : event.which);
});
我得到undefined
所有这些方法。我做错了什么或这是一个jQuery / Javascript问题? Here you can find the fiddle
我希望当用户在其中粘贴内容或以任何方式更改输入内容时,我的输入会触发。
p.s:我的方法按预期工作,唯一不起作用的是......这个。
答案 0 :(得分:2)
我认为这是因为您的活动不正确,您正在为输入匹配“输入”事件
这可能是您所追求的(注意paste
事件):
jQuery(function () {
jQuery("#post-input").on('keyup', function(event){
if(!(event.ctrlKey || $(this).data('skipkeyup'))) {
console.log('keyup', event);
} else {
$(this).data('skipkeyup', true)
}
}).on('paste', function (event) {
console.log('paste event', event);
}).on('keydown', function(){
$(this).data('skipkeyup', false)
})
});
答案 1 :(得分:2)
使用可以使用keydown事件
input.on('keydown ', function(event){
console.log("Code: " + event.which);
});
答案 2 :(得分:1)
选中此Fiddle
我不确定你想要的是什么,但你来了
input.on('keyup keydown copy', function(event){
console.log("Code: " + event.keyCode);
console.log("Code: " + event.which);
console.log("Code: " + window.event ? event.keyCode : event.which);
});
答案 3 :(得分:0)
尝试使用addEventListener
,您可以在其中将事件的名称指定为字符串,并将动作事件包括为参数:
let keyCode;
input.addEventListener('keydown', (e) => {
keyCode = e.keyCode
});
input.addEventListener('input', (e) => {
console.log(keyCode)
})
答案 4 :(得分:0)
那是因为您使用的是 onkeypress 而不是 onkeydown!
尝试使用 onkeydown 执行此操作,您将能够访问 e.keyCode。
所以而不是:
<input onkeypress="getKeyValue()"/>
你应该这样做:
<input onkeydown="getKeyValue()"/>
我希望这会有所帮助,祝你好运!
答案 5 :(得分:0)
您可以使用更好的方法来实现相同的事情,而无需为按键事件而烦恼,并且通过添加隐藏输入,然后跟踪其更改事件以按下按键并使用它,这样您就不会必须担心关键代码或其他任何事情。
答案 6 :(得分:0)
事件输入没有键码,但您可以那样使用 inputType 属性。
console.log(event.inputType);
event.inputType == "deleteContentBackward" // Backspace
event.inputType == "deleteContentForward" // Delete
event.inputType == "insertText" // When insert character