Ich habe ein Ankertag, das eine JavaScript-Funktion aufruft.
Wie kann ich mit oder ohne JQuery feststellen, ob die Umschalttaste gedrückt ist, während auf den Link geklickt wird?
Der folgende Code funktioniert NICHT, da der Tastendruck nur ausgelöst wird, wenn eine "echte Taste" (nicht die Umschalttaste) gedrückt wird. (Ich hatte gehofft, es würde ausgelöst, wenn nur die Umschalttaste gedrückt würde.)
var shifted = false;
$(function() {
$(document).keypress(function(e) {
shifted = e.shiftKey;
alert('shiftkey='+e.shiftkey);
});
$(document).keyup(function(e) {
shifted = false;
});
}
...
function myfunction() {
//shift is always false b/c keypress not fired above
}
javascript
jquery
Pete Alvin
quelle
quelle
shiftkey
stattshiftKey
:-)shift+click
, verwenden Siefilter-altered-clicks
Antworten:
quelle
shift
seit der Rückkehr der Funktion nicht mehr beteiligt warenfalse
. Ich musste explizitreturn true
crtl + r, ctrl + s, ctrl + p usw. zulassenHier ist der Schlüsselcode für jeden Tastenanschlag in JavaScript. Sie können dies verwenden und feststellen, ob der Benutzer die Umschalttaste gedrückt hat.
Nicht alle Browser verarbeiten das Tastendruckereignis gut. Verwenden Sie daher entweder das Tastendruck- oder das Tastendruckereignis wie folgt:
quelle
event.key
stattdessen! Es gibt Ihnen den Charakter direkt, zB: "a", "1", "LeftArrow"document.addEventListener("keydown", function(e){ console.log(e.which); });
Bei Mausereignissen weiß ich, dass in Firefox zumindest die Eigenschaft "shiftKey" für das Ereignisobjekt anzeigt, ob die Umschalttaste gedrückt ist. Es ist bei MSDN dokumentiert, aber ich habe es nicht für immer ausprobiert, daher kann ich mich nicht erinnern, ob der IE dies richtig macht.
Daher sollten Sie in der Lage sein, das Ereignisobjekt in Ihrem "Klick" -Handler auf "shiftKey" zu überprüfen.
quelle
Ich hatte ein ähnliches Problem beim Versuch, ein "Shift + Click" zu erfassen, aber da ich ein Steuerelement eines Drittanbieters mit einem Rückruf anstelle des Standardhandlers verwendete
click
, hatte ich keinen Zugriff auf das Ereignisobjekt und das zugehörige Objekte.shiftKey
.Am Ende habe ich das Mouse-Down-Ereignis behandelt, um die Verschiebung aufzuzeichnen und es später in meinem Rückruf zu verwenden.
Gepostet für den Fall, dass jemand anderes hier auf der Suche nach einer Lösung für dieses Problem ist.
quelle
Das
keypress
Ereignis wird nicht von allen Browsern ausgelöst, wenn Sie auf shiftoder klicken ctrl, aber zum Glück ist es daskeydown
Ereignis .Wenn Sie das
keypress
mitkeydown
ausschalten, haben Sie vielleicht mehr Glück.quelle
Ich habe eine Methode verwendet, um zu testen, ob eine bestimmte Taste gedrückt wird, indem die aktuell gedrückten Tastencodes in einem Array gespeichert werden:
Hier ist die jsfiddle
quelle
Die hervorragende JavaScript-Bibliothek KeyboardJS verarbeitet alle Arten von Tastendrücken, einschließlich der UMSCHALTTASTE. Sie können sogar Tastenkombinationen festlegen, z. B. zuerst STRG + x und dann a drücken.
Wenn Sie eine einfache Version wünschen, gehen Sie zur Antwort von @tonycoupland ):
quelle
Das funktioniert gut für mich:
quelle
Um zu überprüfen, ob die Umschalttaste beim Klicken mit der Maus gedrückt wird , gibt es eine genaue Eigenschaft im Klickereignisobjekt: shiftKey (und auch für Strg und Alt sowie Metataste): https://www.w3schools.com/jsref/event_shiftkey .asp
Verwenden Sie also jQuery:
quelle
Ein modularerer Ansatz und die Möglichkeit, Ihren
this
Spielraum in den Hörern zu behalten :quelle
Wenn jemand einen bestimmten Schlüssel erkennen möchte und den Status der "Modifikatoren" (wie sie in Java genannt werden) kennen muss, dh Umschalt-, Alt- und Steuertasten, können Sie so etwas tun, das
keydown
auf Taste F9 reagiert . aber nur, wenn derzeit keine der Umschalt-, Alt- oder Steuertasten gedrückt wird.quelle
Demo
quelle