使用Javascript在密码中进行特殊字符验证

时间:2012-05-14 10:25:24

标签: javascript

function SpecialCharacters(e) {
        var keynum
        var keychar
        var numcheck
        // For Internet Explorer
        if (e=window.event) {
            keynum = e.keyCode;
        }
        // For Netscape/Firefox/Opera
        else if (e.which) {
            keynum = e.which;
        }
        keychar = String.fromCharCode(keynum);
        //List of special characters you want to restrict
        if (keychar == "`" || keychar == "&" || keychar == "<" || keychar == ">" || keychar == "," || keychar == "|" || keychar == "?" || keychar == "¬" || keychar == "£" || keychar == "\\") {
            return false;
        } else {
            return true;
        }
    }

1 个答案:

答案 0 :(得分:1)

在回答你的“问题”之前的一些事情(就你所问的那样)

  • 不要使用Javascript验证密码。可以绕过Javascript。这是没有意义的,除非你使用服务器端语言重新验证,只是使用javascript来提供实时错误等等
  • 下次提出问题,不要随意发布您的代码。我们需要一个问题才能回答
  • 修复语法
  • 请勿使用if-else返回true或false

对,IE错误。因为你没有返回变量,所以我看不出IE如何可能返回undefined。所以我猜错误在其他地方。清理代码可能会解决您的问题。

function SpecialCharacters(e) {
    var keynum, keychar, numcheck;

    if (e == window.event) { // For Internet Explorer
        keynum = e.keyCode;
    } else if (e.which) { // For Netscape/Firefox/Opera
        keynum = e.which;
    }

    keychar = String.fromCharCode(keynum);

    // List of special characters you want to restrict
    return (keychar == "`" || keychar == "&" || keychar == "<" || keychar == ">" || keychar == "," || keychar == "|" || keychar == "?" || keychar == "¬" || keychar == "£" || keychar == "\\");
}

我修正了什么:

  • 变量定义
  • IE的if语句。您使用了单个=符号,该符号不是条件语法,但用于定义变量。要比较两个值,您需要使用两个==或三个===等号。
  • 我删除了if-else语句以返回true或false,因为你在if语句中放入的内容已经返回true或false,所以你也可以返回它。

额外提示:

  • 你可以把所有的keychars放在一个数组中并循环遍历它们