检测是否已输入字符或数字

5
我希望设置一个主页,当用户按下任何字符(小写或大写)或任何数字时,会将用户重定向到“登录页面”,因为主页本身没有需要输入的内容。
我的第一次尝试是这样的:
document.onkeyup = function() {
  document.location.href = "/login"
}

这个功能可以正常工作,但它会响应每一个键,包括方向键、Tab键,甚至是大写锁定键。如何限制这个函数只响应字符和数字?

3个回答

5

当事件发生时,键码会作为一个事件参数被发送。我们可以利用它来确定是字符键还是数字键被按下。代码如下:

document.onkeyup = function(e) {

  if ((e.keyCode >= 65 && e.keyCode <= 90) ||
      (e.keyCode >= 97 && e.keyCode <= 122) ||
      (e.keyCode >= 48 && e.keyCode <= 57)){
      document.location.href = "/login";
  }
};

参考一下,以上使用的数字是ASCII码,完整列表可以在此处找到:http://asciitable.com/。48-57是0-9数字,65-90是大写字母,97-122是小写字母。
你可以在这里找到一个非常简单的JS Fiddle示例:http://jsfiddle.net/jpYyg/。记得在按任何按钮之前点击“结果”面板(右下角)否则它将无法正常工作!
希望对你有帮助。

1
<script type="text/javascript">
    document.onkeyup = function (e) {
        var patt =/\w/g;
        var key = String.fromCharCode(e.keyCode);
        if (patt.test(key))
            document.location.href = "/login";
    }
</script>

0
document.onkeyup = function(event) {
    if (###event.keyCode corresponds to a letter or numeral###)
        document.location.href = "/login";
    else
        event.preventDefault();
}

如果你想要使用jQuery来简化你的生活,你也可以查看http://api.jquery.com/keypress/的演示。


event.keyCode 始终是一个数字。 - Shaz
1
“###event.keyCode是字符还是数字###”是我问题的主要部分。 - sscirrus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接