5
我需要監視Shift鍵的狀態,無論是向上還是向下。其目的是通知用戶,在按住Shift鍵的同時,他們即將執行的拖放操作將複製節點,而不會移動它們。綁定javascript鍵盤事件
但是,如果我按住Shift鍵並執行拖放操作,則不再存在該鉤子;屏幕不再響應按鍵並保持「按下」狀態。
我猜是有一個操作問題的順序或缺少一塊。 Javascript exper請指教。
謝謝!
<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>
你知道爲什麼這樣不起作用嗎?疑似代碼段失敗? `ex:keyUpHandler在某個時候被調用了嗎?`可能會給你一個想法... – 2010-11-22 21:44:56
拖放部分在哪裏?什麼代碼涉及* that *? – Pointy 2010-11-22 22:30:57