Ich habe eine Notwendigkeit, den Zustand der Umschalttaste zu überwachen, ob es nach oben oder unten ist. Sein Zweck besteht darin, den Benutzer darüber zu informieren, dass die Drag-and-Drop-Operation, die sie gerade ausführt, während des Haltens der Umschalttaste den Knoten (COPY) kopiert und nicht bewegt.Binding Javascript Tastenkürzel Ereignisse
Ich habe es funktioniert perfekt mit dem Code unten, aber wenn ich die Umschalttaste gedrückt halten und die Drag & Drop durchführen, ist der Haken nicht mehr vorhanden; Der Bildschirm reagiert nicht mehr auf den Tastendruck und bleibt im "gedrückten" Zustand.
Ich vermute, es gibt entweder eine Reihenfolge der Operationen Problem oder ein fehlendes Stück. Javascript-Experten bitte beraten.
Danke!
<form id="form1" runat="server">
<div>
<table>
<tr>
<td valign="top"><ASP:Literal id="treeLeft" EnableViewState="false" runat="server" /></td>
</tr>
</table>
<asp:Label ID="lblCopyEnabled" runat="server" BackColor="Green" Text="Item will be Copied" ForeColor="White" Font-Bold="true" style="padding: 0px 10px 0px 10px; display: none" />
</div>
<script type="text/javascript">
document.onkeydown = KeyDownHandler;
document.onkeyup = KeyUpHandler;
var SHIFT = false;
function KeyDownHandler(e) {
var x = '';
if (document.all) {
var evnt = window.event;
x = evnt.keyCode;
}
else {
x = e.keyCode;
}
DetectKeys(x, true);
ShowReport();
}
function KeyUpHandler(e) {
var x = '';
if (document.all) {
var evnt = window.event;
x = evnt.keyCode;
}
else {
x = e.keyCode;
}
DetectKeys(x, false);
ShowReport();
}
function DetectKeys(KeyCode, IsKeyDown) {
if (KeyCode == '16') {
SHIFT = IsKeyDown;
}
else {
if (IsKeyDown)
CHAR_CODE = KeyCode;
else
CHAR_CODE = -1;
}
}
function ShowReport() {
var copyLabel = document.getElementById("<%= lblCopyEnabled.ClientID %>");
if (SHIFT) {
copyLabel.style.display = "inline";
ob_copyOnNodeDrop = true;
}
else {
copyLabel.style.display = "none";
ob_copyOnNodeDrop = false;
}
}
</script>
</form>
Sie haben keine Ahnung, warum dies nicht funktioniert? vermutete Code-Abschnitte, die fehlschlagen? 'ex: Wird der keyUpHandler irgendwann aufgerufen? 'könnte dir eine Idee geben ... –
Wo ist der Drag & Drop Teil? Welcher Code ist mit * dem * verbunden? – Pointy
Möchten Sie wirklich kopieren, wenn Shift gedrückt wird? Normalerweise kopiert das System, wenn Strg gedrückt wird, und bewegt sich, wenn die Umschalttaste gedrückt gehalten wird. Und Sie sollten die Event-Schnittstelle mit 'e = e || wirklich normalisieren window.event', nicht nach 'document.all' suchen und davon ausgehen, dass der IE läuft. –