Javascript键码冲突:“右箭头”和“单引号”

阿拉塔

下面的脚本执行应做的工作,即,它对键“向左箭头”和“向右箭头”做出反应。但是,由于键码冲突,它也会对单引号做出反应。这样就不可能在输入字段中输入该字符。可以采取任何措施吗?

<script type="text/javascript">
  onload = function(){
    document.onkeypress=function(e){
      if(window.event) e=window.event;
      var keycode=(e.keyCode)?e.keyCode:e.which;

      switch(keycode){
        case 37: window.location.href='set.jsp?index=5';
          break;
        case 39: window.location.href='set.jsp?index=7';
          break;
      }
    }
  }
</script>
格雷格·伯格哈特(Greg Burghardt)

当用户按下单引号键时,该e.keyCode属性为零,该e.which属性为39。执行String.fromCharCode(39)将返回单引号。

您需要keyCodeif属性是否在事件对象中:

var keycode = "keyCode" in e ? e.keyCode : e.which;

这样,当该属性存在于事件对象中并且该which属性也存在时,您将获得keyCode零

document.onkeydown = function(event) {
    event = event || window.event;

    var keyCode = "keyCode" in event ? event.keyCode : event.which;

    switch (keyCode) {
        case 37: console.log("37 was pressed", event); break;
        case 39: console.log("39 was pressed", event); break;
    }
};

编辑1:其他评论者和答案正确。我忘记了您不应该通过keypress事件检测控制键更改为onkeydown

跨浏览器工作的完整HTML示例:

<!DOCTYPE HTML>
<html>
<head>
    <meta charset="utf-8">
    <title>Key Codes Test</title>
</head>
<body>
    <script type="text/javascript">
        document.onkeydown = function(event) {
            event = event || window.event;

            var keyCode = "keyCode" in event ? event.keyCode : event.which;

            switch (keyCode) {
                case 37: console.log("37 was pressed", event); break;
                case 39: console.log("39 was pressed", event); break;
            }
        };
    </script>
    <input type="text" size="30">
</body>
</html>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

JavaScript / Sublime Text:交换单引号和双引号键

来自分类Dev

使用JavaScript对#,单引号和双引号进行编码

来自分类Dev

如何在JavaScript中使用单引号和双引号

来自分类Dev

JavaScript和JSON更漂亮的单引号,HTML,Sass和CSS更漂亮的单引号

来自分类Dev

javascript array - 用单引号分隔值和值的值

来自分类Dev

单引号,双引号和无引号的Javascript正则表达式

来自分类Dev

单引号和反斜杠

来自分类Dev

单引号和反斜杠

来自分类Dev

ABAP中的反引号和单引号

来自分类Dev

psycopg,双引号和单引号插入

来自分类Dev

单引号和双引号,如何安排?

来自分类Dev

sed中的单引号和双引号

来自分类Dev

单引号的Javascript集属性

来自分类Dev

如何在JavaScript中转义所有单引号和双引号

来自分类Dev

将带双引号和单引号的字符串从ASP传递到javascript函数

来自分类Dev

JavaScript:为什么单引号和双引号仍然在一起?

来自分类Dev

append() 中的 JavaScript 单引号和双引号 - fullcalendar external-events

来自分类Dev

groovy用单引号和双引号替换双引号

来自分类Dev

双引号,单引号和无引号的假设

来自分类Dev

groovy用单引号和双引号替换双引号

来自分类Dev

具有单引号冲突的DataTable选择方法C#

来自分类Dev

如何在Apache RewriteRule中匹配右单引号字符

来自分类Dev

处理单引号和双引号php和ajax

来自分类Dev

HTML和CSS中的单引号和双引号

来自分类Dev

preg_quote和转义单引号

来自分类Dev

sed匹配美元和单引号字符

来自分类Dev

gawk和Shell脚本的单引号问题

来自分类Dev

perl regex方括号和单引号

来自分类Dev

熊猫删除方括号和单引号

Related 相关文章

热门标签

归档