@keydown.tab 也捕获 shift + tab。 这是预期的行为吗? 如果它是一个错误,我会做一个repro。
是的,这是预期的。 您应该明确检查没有按下 shift
这是完成此操作的解决方案标记:
<your-element @keydown.tab="handleTabPress(someData, $event)"></your-element>
在处理程序函数中,您可以通过检查$event
来检测是否持有SHIFT :
handleTabPress(someData, e) {
// if SHIFT key is held to navigate backwards, exit through this gate
if (e.shiftKey) {
console.log('halting event due to SHIFT+TAB');
return;
}
// otherwise, execute normal logic
console.log('tab was pressed', someData);
},
只是为了更新这一点,因为 2.5.0 vue 有 .exact 修饰符,可以防止这种行为:
@keydown.tab.exact="dostuff()"
这仅在按下 Tab 时有效,而在按下 shift + Tab 时无效。 有关更多信息,请参阅https://vuejs.org/v2/guide/events.html#exact -Modifier。
最有用的评论
只是为了更新这一点,因为 2.5.0 vue 有 .exact 修饰符,可以防止这种行为:
@keydown.tab.exact="dostuff()"
这仅在按下 Tab 时有效,而在按下 shift + Tab 时无效。 有关更多信息,请参阅https://vuejs.org/v2/guide/events.html#exact -Modifier。