检查是否"改变"事件来自键盘

时间:2017-08-28 12:26:49

标签: javascript jquery events onchange

我有on change触发器来获取事件:

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

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

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分:0)

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

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