用JavaScript获取输入的特殊字符

简介:


Web开发时可能经常会用到在keyPress时获得输入的字符。String.fromCharCode()可以来实现这个,不过这个函数在你使用Shift键来输入特殊字符时就不管用了,需要改造一下,这个帖子给出了改造的方法,经测试在各种主流浏览器均正常。

<html>
<head>
<title >mapKeyPressToActualCharacter test</title>
<script language="javascript" type="text/javascript">
    function onKeyPress() {
 
        var e = window.event || e;
        var keyCode = e.keyCode;
 
        if (keyCode == 8) {
            this.criteria.value = this.criteria.value.substring(
                    0, this.criteria.value.length - 1);
        }
        else {
            this.criteria.value
                += mapKeyPressToActualCharacter(event.shiftKey, keyCode);
        }
 
    }
 
    function mapKeyPressToActualCharacter(isShiftKey, characterCode) {
        if (characterCode === 27
            || characterCode === 8
            || characterCode === 9
            || characterCode === 20
            || characterCode === 16
            || characterCode === 17
            || characterCode === 91
            || characterCode === 13
            || characterCode === 92
            || characterCode === 18) {
            return false;
        }
        if (typeof isShiftKey != "boolean" || typeof characterCode != "number") {
            return false;
        }
        var characterMap = [];
        characterMap[192] = "~";
        characterMap[49] = "!";
        characterMap[50] = "@";
        characterMap[51] = "#";
        characterMap[52] = "$";
        characterMap[53] = "%";
        characterMap[54] = "^";
        characterMap[55] = "&";
        characterMap[56] = "*";
        characterMap[57] = "(";
        characterMap[48] = ")";
        characterMap[109] = "_";
        characterMap[107] = "+";
        characterMap[219] = "{";
        characterMap[221] = "}";
        characterMap[220] = "|";
        characterMap[59] = ":";
        characterMap[222] = "\"";
        characterMap[188] = "<";
        characterMap[190] = ">";
        characterMap[191] = "?";
        characterMap[32] = " ";
        var character = "";
        if (isShiftKey) {
            if (characterCode >= 65 && characterCode <= 90) {
                character = String.fromCharCode(characterCode);
            } else {
                character = characterMap[characterCode];
            }
        } else {
            if (characterCode >= 65 && characterCode <= 90) {
                character = String.fromCharCode(characterCode).toLowerCase();
            } else {
                character = String.fromCharCode(characterCode);
            }
        }
        return character;
    }
 
</script>
 
</head>
<body>
    <input name="test" type="text" onkeypress="onKeyPress();"/>
</body>
</html>

 

测试结果截图,在Firefox, Chrome and IE.和Safari下均通过:

 

TestResult

作者: 峻祁连
邮箱:junqilian@163.com 
出处: http://junqilian.cnblogs.com 
转载请保留此信息。




本文转自峻祁连. Moving to Cloud/Mobile博客园博客,原文链接:http://www.cnblogs.com/junqilian/archive/2012/08/01/2618197.html ,如需转载请自行联系原作者
目录
打赏
0
0
0
0
23
分享
相关文章
前端JS实现密码校验键盘横竖、26字母、相同字母、相同数字、密码包含用户名、数字 字母不能连续 不能相同三个、不能横向 竖向 连续三个 包含字符、不能有中文符号
该 JavaScript 代码实现了一个严格的密码校验功能,确保密码满足多种安全要求,包括长度、字符类型、不包含中文及特殊字符、不与用户名相似等。通过多个辅助函数,如 `validateFormat` 检查密码格式,`isHasChinaCharFun` 检测中文符号,`getCharAll` 生成键盘组合,以及 `checkPasswordFun` 综合验证密码的有效性和安全性。此工具对于提高用户账户的安全性非常有用。
183 0
用html+javascript打造公文一键排版系统14:为半角和全角字符相互转换功能增加英文字母、阿拉伯数字、标点符号、空格选项
用html+javascript打造公文一键排版系统14:为半角和全角字符相互转换功能增加英文字母、阿拉伯数字、标点符号、空格选项
用html+javascript打造公文一键排版系统13:增加半角字符和全角字符的相互转换功能
用html+javascript打造公文一键排版系统13:增加半角字符和全角字符的相互转换功能
|
8月前
|
js 判断字符串是否包含中文,判断字符串是否全是中文,判断字符是否为中文
js 判断字符串是否包含中文,判断字符串是否全是中文,判断字符是否为中文
316 0
JS中判断一个字符串中出现次数最多的字符,统计这个次数?
JS中判断一个字符串中出现次数最多的字符,统计这个次数?
64 0
Js判断是否包含特殊字符的方法
Js判断是否包含特殊字符的方法
256 0
js判断一个字符出现最多的次数
js判断一个字符出现最多的次数
123 0
JS控制input输入特殊字符
JS控制input输入特殊字符
110 0

热门文章

最新文章