【发布时间】:2016-05-25 13:12:23
【问题描述】:
是否可以从(jquery)更改事件处理程序中找出触发更改事件的原因 - 按下哪个键或鼠标单击?
我的用例:我有 input[type=text] 项目的动态列表,如果用户填写最后一个空项目,我会为另一个项目添加新的 input[type=text]。如果用户按下选项卡(触发了更改事件),我想自动聚焦它,但不是例如当用户点击某处时(因此也触发了更改,但用户可能想要关注其他内容)。
简化示例:
https://jsfiddle.net/yxu82p1o/1/
<input type=text>
<script>
function addMore() {
$('input').off('change.addMore');
$('<input type=text>').insertAfter($('input').last()).on('change.addMore', addMore);
}
$('input').on('change.addMore', addMore);
</script>
PS。我可以找出解决方法,例如附加另一个 keyup 事件并从中找出按下的键,但从更改事件中找出导致它的原因会更简单、更清晰。
【问题讨论】:
-
将
e添加到addMore 参数中:addMore(e),然后检查e.which是否为键盘或e.button为鼠标 -
@bozdoz -
e.which和e.button在change上将是undefined,至少在 chrome 中,或者我在这里遗漏了什么?
标签: javascript jquery onchange