@ keydown.tab também captura shift + tab. É este o comportamento esperado? Se for um bug, farei uma reprodução.
Sim, é esperado. Você deve verificar explicitamente se a tecla shift não foi pressionada
Aqui está a marcação da solução para fazer isso:
<your-element @keydown.tab="handleTabPress(someData, $event)"></your-element>
Dentro da função de manipulador, você pode detectar se SHIFT é pressionado examinando o $event
:
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);
},
Só para atualizar isso, já que 2.5.0 vue tem o modificador .exact, que evita exatamente este comportamento:
@keydown.tab.exact="dostuff()"
Isso só funcionará quando a guia for pressionada, não quando shift + tab for pressionada. Veja https://vuejs.org/v2/guide/events.html#exact -Modifier para mais.
Comentários muito úteis
Só para atualizar isso, já que 2.5.0 vue tem o modificador .exact, que evita exatamente este comportamento:
@keydown.tab.exact="dostuff()"
Isso só funcionará quando a guia for pressionada, não quando shift + tab for pressionada. Veja https://vuejs.org/v2/guide/events.html#exact -Modifier para mais.