يلتقط @ keydown.tab أيضًا shift + tab. هل هذا هو السلوك المتوقع؟ إذا كان هناك خطأ ، فسأقوم بتوبيخه.
نعم ، هذا متوقع. يجب عليك التحقق صراحة من عدم الضغط على التحول
إليك ترميز الحل لتحقيق ذلك:
<your-element @keydown.tab="handleTabPress(someData, $event)"></your-element>
داخل وظيفة المعالج ، يمكنك اكتشاف ما إذا كان SHIFT معلقًا بفحص $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);
},
فقط لتحديث هذا ، نظرًا لأن 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 للمزيد.