Event.keyCode不能与'on input'一起使用 - 未定义

时间:2014-01-16 11:02:28

标签: javascript jquery events input

目前我正在为项目开发一个功能,并且出现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);
});

enter image description here

我得到undefined所有这些方法。我做错了什么或这是一个jQuery / Javascript问题? Here you can find the fiddle

我希望当用户在其中粘贴内容或以任何方式更改输入内容时,我的输入会触发。

p.s:我的方法按预期工作,唯一不起作用的是......这个。

7 个答案:

答案 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)
  })

});

http://jsfiddle.net/uBZF9/9/

答案 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