绑定 Javascript 按键事件

2024-02-26

I have a need to monitor the state of the Shift key, whether it is up or down. Its purpose is to notify the user that while the shift key is held down, the drag and drop operation they are about to perform is going to COPY the node(s), and not move them.

I have it working perfectly with the code below, however, if I hold the Shift key and perform the drag and drop, the hook no longer exists; the screen no longer responds to the key press and remains in the "pressed" state.

我猜要么是操作顺序问题,要么是缺少一块。 Javascript高手请指教。

<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>

我不确定为什么您的代码失败,因为您没有包含拖放代码,但有一种更简单的方法可以完成您想要的操作。对于浏览器触发的任何事件,您可以访问 shiftKey 属性,如果按下 Shift 键,该属性将为 true:

window.onmousemove = checkShift;

function checkShift(e)
{
  if (!e) var e = window.event;
  if (e.shiftKey)
  {
    ....Copy....
  }
  else
  {
    ....Move....
  }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

绑定 Javascript 按键事件 的相关文章

随机推荐

  • 可以从自定义模型绑定器访问数据库吗?

    假设我有一个对象 它从 HttpPost 获取一些数据 从数据库获取一些数据 我想我想允许 ModelBinder 访问数据库 存储库以获取帖子中丢失的数据 实际上 这是一个好主意还是坏主意 鉴于自 2010 年初以来我对这类事情的思考已经
  • Swift 5.4 十六进制转 NSColor

    我正在为 macOS 开发一个程序 我需要将十六进制颜色转换为 NSColor 我在这里查看了建议的解决方案 将十六进制颜色代码转换为 NSColor https stackoverflow com questions 8697205 co
  • EPPlus 中的隐藏列不起作用

    我想使用 EPPlus nuget 包隐藏 excel 中的一列 但它不起作用 它没有隐藏该列 这就是我发现应该能解决问题的方法 也许有一个错误 worksheet Column 1 Hidden true 我使用的是4 5 2 1版本 项
  • 以编程方式创建 XPath 表达式

    是否可以从网页上光标的位置自动生成最具体的 XPath 表达式 XPath 表达式将随着 onMouseMove 事件 而改变 如果可以的话 你会如何实施 或者它已经在某些地方实施了Javascript or Python图书馆 我更喜欢它
  • 不带空格的字符串长度 (C#)

    快点小问题 我需要计算字符串的长度 但不包括其中的空格 例如 对于像 I am Bob 这样的字符串 string Length将返回 8 6 个字母 2 个空格 我需要一种方法或其他东西来给我字母的长度 或数量 在 我是鲍勃 的情况下为
  • 文本中的句子注释不带标点符号

    我很难让 CoreNLP 系统正确找到诗歌语料库中一个句子的结束位置和另一个句子的开始位置 其陷入困境的原因 有些诗在整个长度上都没有标点符号 有时甚至没有大小写 有些诗的句子从一个段落延伸到另一个段落 有些诗每行开头都大写 这是一个特别棘
  • 我的 FreeMarker 方法返回一个带有 ${variable} 的字符串——如何强制 FreeMarker 解析它?

    我创建了一个类来实现模板方法模型Ex来自 FreeMarker 假装exec 函数返回一个字符串 你好 用户名 我将该类分配给数据模型中的一个方法 dataModel put myMethod myClassInstance dataMod
  • 如何从浏览器上传文件(附件)?

    我无法上传附件以使浏览器正常工作 一些提示是here http japhr blogspot de 2010 02 how to upload files in couchapp html 其他的there http comments gm
  • ResultSet.TYPE_SCROLL_SENSITIVE 的行为

    我对 a 的行为感到困惑ResultSet这是类型TYPE SCROLL SENSITIVE 我对此的理解是 我执行一个选择查询 返回一个结果集 我打印出第一行中特定列的值 然后我执行Thread sleep 10000 这会使程序暂停 1
  • 在实体框架 6 中保存分离的实体

    我读过很多关于在实体框架中保存分离实体的帖子 所有这些似乎都适用于旧版本的实体框架 它们引用了诸如ApplyCurrentValues和ChangeObjectState之类的方法 但这些方法似乎并不存在 一时兴起 我决定尝试一种通过智能感
  • VS2008到VS2010项目转换

    我有一个在 VS2008 中构建的组件项目 目标是 NET Framework 3 5 我最近下载了 VS2010 Beta 1 以确保在切换到新 IDE 时该项目能够正确转换 该项目包含对几个针对该框架 2 0 版本构建的第三方 dll
  • 使用 URL 时找不到 Webpack 2 模块

    我刚刚更新了我的 Angular 2 项目以使用 Webpack 2 它运行得很好 然而 我在使用时遇到了一个新问题resolve alias key 当我使用 webpack 1 时 这段代码工作得很好 webpack config js
  • 我如何将 C++ 对象传递给具有不同 _ITERATOR_DEBUG_LEVEL 的 DLL

    我的可执行文件调用了许多我自己编写的 DLL 根据这些 DLL 使用的第 3 方 C 库 我无法自由选择所有 DLL 的编译器设置 因此在一些DLL中 ITERATOR DEBUG LEVEL设置为 2 调试版本中的默认值 但在我的可执行文
  • javascript setTimeout 调用错误

    我想调用window setTimeot https developer mozilla org en DOM window setTimeout功能与我的自定义范围 所以我使用call https developer mozilla or
  • R seq函数产生错误的结果[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 似乎我的一台机器为 seq 函数产生了错误的结果 而另一台机器或在线 r fiddle http www r fiddle org
  • ng-bootstrap 依赖项和警告

    我希望使用 ng bootstrap 文档要求安装 bootstrap CSS 作为依赖项 但不包括 jQuery 如果我使用 npm 安装 bootstrap 我会收到警告 它需要 jquery 和 popper npm i S boot
  • iPhone:本地化/国际化默认字符串文件

    我目前支持两种语言 英语和西班牙语 因此我有两个main strings每种语言的文件 一进en lproj和一在es lproj 我现在想要的是英语main strings如果用户的区域设置不是en or es到达应用程序 例如de or
  • python s3 boto connection.close 导致错误

    我有将文件写入 s3 的代码 代码运行良好 conn S3Connection AWS ACCESS KEY ID AWS SECRET ACCESS KEY bucket conn get bucket BUCKET validate F
  • git:如何在不签出的情况下推送?

    我有两台计算机 A 和 B 并使用 git 同步一些文件 例如 init el A 的存储库托管在 unfuddle 上 B 的存储库位于本地 A中的init el被修改并推送 B中的init el也被修改 问题是 如何将A的更改合并到B的
  • 绑定 Javascript 按键事件

    I have a need to monitor the state of the Shift key whether it is up or down Its purpose is to notify the user that whil