【问题标题】:check if "change" event is from keyboard检查“更改”事件是否来自键盘
【发布时间】:2017-08-28 12:26:49
【问题描述】:

我有 on change 触发事件:

  $(document).on('change', '.class', function (eve) {

如何通过事件变量知道更改是来自鼠标还是来自键盘?

【问题讨论】:

标签: javascript jquery events onchange


【解决方案1】:

不,这是不可能的,因为 change 事件可能仅在相关元素失去焦点时触发,并且在使用多种不同的输入方法(包括鼠标和键盘)进行了几次更改之后。

使用input 元素对其进行测试:使用键盘输入一些文本,使用上下文菜单(右键单击)粘贴一些文本,并可能通过用鼠标将一些字符拖动到不同的位置来移动它们。然后按下按钮。直到现在您才获得change 事件:

$(document).on('change', '.class', function (eve) {
    console.log('change event occurred');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input class="class">
<button>Button</button>

【讨论】:

    【解决方案2】:

    要确保事件来自键盘,请使用keydown。要确保它来自鼠标,请使用mousekeydown。因此,您需要为每个设备注册 2 个不同的事件:

    $(document).on('keydown', '.class', function (e) {
       // From keyboard
    }
    $(document).on('mousekeydown', '.class', function (e) {
       // From mouse
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-24
      • 2012-07-06
      • 2011-05-31
      • 1970-01-01
      • 2017-08-16
      • 1970-01-01
      • 2018-09-30
      • 1970-01-01
      相关资源
      最近更新 更多