Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >OnKeyDown和String.FromCharCode

OnKeyDown和String.FromCharCode
EN

Stack Overflow用户
提问于 2011-01-25 12:55:05
回答 4查看 9.3K关注 0票数 4

我有一个关于OnKeyDown事件的问题。OnKeyDown事件提供了一个KeyCode,但我不知道具体给出了什么类型的代码。基本上,我使用String.FromCharCode方法从我认为是ASCII码的代码中获取真正的字符。它工作得很好,直到我试着用数字板上的数字。如果我使用上面的“w”键输入“2”,这是可以的,但是使用数字键盘中的“2”,给出的KeyCode是98 (这是'b‘Ascii代码)。

我正在看这个page,也有同样的问题。这个例子被认为是为了防止用户键入数字。它可以很好地处理第一个字符顶部的数字(因为没有更好的名称),但您可以使用数字键盘键入数字。

你知道问题出在哪里吗?(这真的是ascii代码吗?我是不是用错了事件?)...

谢谢..。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-01-25 13:16:56

要防止出现数字,请改用onkeypress

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
onkeypress="return PreventDigits(event);"
...
function PreventDigits(evt) {
    evt = evt || window.event;
    var keyCode = evt.keyCode || evt.which;7
    var num = parseInt(String.fromCharCode(keyCode), 10);
    return isNaN(num);
}

现场示例:http://jsfiddle.net/yahavbr/vwc7a/

票数 7
EN

Stack Overflow用户

发布于 2011-01-25 13:08:31

从keycode返回的数字映射到下面定义的here集。这个集合并不对应于ASCII,但在某些方面是相似的。我会看一看,看看我是否能找到更多关于如何从数字中获取字符的信息。

此外,我还建议您使用e.which而不是e.keyCode

作为进一步的评论,永远不要相信w3schools。

看看e.originalEvent.keyIdentifier,它似乎包含了一些unicode。但它仍然将数字键盘映射到A-H,而不是0-9。我觉得它就是讨厌数字键盘。在某个地方应该有一个布尔型isnumpad标志。DOM3 API有一个布尔型数字键盘。

当您按数字键盘上的1时,显示为e.originalEvent.keyLocation === 3

W3 spec

KeyboardEvent.DOM_KEY_LOCATION_STANDARD常量KeyboardEvent.DOM_KEY_LOCATION_STANDARD的值为0x00。KeyboardEvent.DOM_KEY_LOCATION_LEFT常量KeyboardEvent.DOM_KEY_LOCATION_LEFT的值为0x01。KeyboardEvent.DOM_KEY_LOCATION_RIGHT常量KeyboardEvent.DOM_KEY_LOCATION_RIGHT的值为0x02。KeyboardEvent.DOM_KEY_LOCATION_NUMPAD常量KeyboardEvent.DOM_KEY_LOCATION_NUMPAD的值为0x03

所以keylocation numpad 3映射到DOM_KEY_LOCATION_NUMPAD,你必须手动捕捉===。您可以从数字键盘的键码中减去48,以将A-H映射为0-9

重大免责声明

这就是FF & Chrome所做的。上帝知道IE是做什么的,你可以自己征服那头野兽。我毫不怀疑它做了一些与W3规范完全不同的事情。

票数 3
EN

Stack Overflow用户

发布于 2011-01-25 13:10:52

keyCodecharCode是不同的动物。keyCode与键盘和按键布局相关,而charCode实际上给出了ascii字符代码。

此外,在关键事件的不同实现中有很多不好的地方。我一直喜欢这个页面作为一个很好的资源:http://unixpapa.com/js/key.html

编辑:正如雷诺斯所说,当w3schools出现在谷歌搜索中时,跳过它。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4793766

复制
相关文章
javascript当中 document onkeydown的用法
例 2.2(documentKeypressIEFF.html) 马克-to-win:当系统看见这句话:document.onkeydown = handleKeypress; 以后,当你按keydown时,系统自然就调用: handleKeypress(event)。而且传进来event参数。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"/> </HEAD> <script> function handleKeypress(event) { /*火狐用event所以window.event为undefined,ie正相反,所以event || window.event可以兼容*/ alert("event is "+event +"window.event is "+window.event); alert(111||undefined);//任何数和undefined做||,为原值。 var event = event || window.event; if (window.navigator.userAgent.indexOf("MSIE") >= 1) { var key = event.keyCode; alert("Key: " + String.fromCharCode(key) + "\nCharacter code: " + key + "."); } else if ( window.navigator.userAgent.indexOf("Firefox") >= 1) { var key = event.which;//event.which获取按下的键盘按键Unicode值: /*fromCharCode() 可接受一个或n个指定的 Unicode 值,然后返回一个或多个字符*/ alert("Key: " + String.fromCharCode(key) + "\nCharacter code: " + key + "."); } } document.onkeydown = handleKeypress; </script> </HTML>
马克java社区
2019/10/16
1.6K0
javascript当中 document onkeydown的用法
andriod 手机按键检测事件 onKeyDown() 简述
函数原型: public boolean onKeyDown(int keyCode, KeyEvent event); 第一个参数是用户按下键时,当前所接收到的按键代号; 第二个参数是按键事件的对象
林冠宏-指尖下的幽灵
2018/01/03
1.3K0
关于onChange事件和omComposition事件的先后顺序解决,采用onKeyDown
也许你和我一样,在编写vue项目或者react项目的时候,对某个输入框或者编辑器监听输入事件,你有一些逻辑逻辑处理需要放在onChange函数里,这里不同项目函数名也不一样,我用monaco-editor的内容监听是onDidChangeContent
opencode
2022/12/26
1.6K0
做个PC端打字小游戏
小时候我记得有个软件叫做金山打字通,里面有个打字的飞机大战不知道有没有小伙伴玩过,当然我整不来他那么优秀,我只能做一个较为简单的(「低配版」),低的好像还真挺低。
是乃德也是Ned
2022/12/17
1.3K0
做个PC端打字小游戏
SELECT
<!doctype html> <html> <head> <meta charset="utf-8"> <title>无标题文档</title> </head> <body> <select id="select" onkeydown="Select.del(this,event)" onkeypress="Select.write(this,event)"> <option value=""></option> <option value="aaa">aaa</option> <option valu
一朵灼灼华
2022/08/05
1.7K0
MyApplication.getInstance().exit() 与onDestroy 、finish(),onKeyDown()的关系
https://blog.csdn.net/u014737138/article/details/49231103
wust小吴
2019/07/08
9220
Javascript 键盘事件
相关键值可以参照 http://www.liweiliang.com/741.html
李维亮
2021/07/09
1.1K0
XSS触发语句备忘
一、标准语句 <script>alert(/XSS/)</script> 二、尝试大小写 <sCript>alert(1)</scRipt> 三、使用<img>标签 1、windows事件 <img src="x" onerror=alert(1)> <img src="1" onerror=eval("alert('xss')")> //图片加载错误时触发 2、鼠标事件 <img src=1 onmouseover="alert(1)"> //鼠标指针移动到元素时触发 <img src=1 onmous
HACK学习
2020/01/14
2.4K0
复习 - XSS
简介 跨站脚本攻击(Cross Site Script)为了避免与层叠样式表CSS混淆,故称XSS。XSS是指攻击者利用网站没有对用户提交数据进行转义处理或者过滤不足的缺点,进而将一些代码嵌入到web页面中去,使得别的用户访问也好执行相应的嵌入代码,从而盗取用户资料、利用用户身份进行某些动作或对访问者进行病毒侵害等攻击。反射型和存储型XSS的作用一样,只是用户触发形式不同。 类型 反射型:反射型XSS攻击,又称为非持久型跨站脚本攻击,它是最常见的XSS类型。漏洞产生的原因是攻击者注入的数据反映在响应上,一个
Naraku
2021/07/28
1.3K0
小霸王打字机
依稀记得童年时期,站在电视机傍边,和自己的小伙伴玩小霸王学习机的情景。时间如白驹过隙,现在小伙伴的孩子都会打酱油了,而自己为了生活和梦想依旧在奋斗。怀念青春,就写了这样的一个小游戏。
微醺
2019/01/17
8050
Web前端基础(06)
###JavaScript中对象分类 内置对象: number/string/boolean等 浏览器相关对象BOM: Browser Object Model浏览器对象模型 页面相关对象DOM: Document Object Model文档对象模型 ###BOM浏览器相关内容 window: 该对象的属性和方法称为全局属性和全局方法,访问时可以省略掉window. window中常见的方法: window.isNaN() 判断变量是否是NaN window.alert() 弹出提示框 window.c
海拥
2021/08/23
2.8K0
JavaScript事件与例子
事件,就是预先设置好的一段代码,等到用户触发的时候执行。 一:常见的事件: 1.关于鼠标的事件   onclick 鼠标单击触发   ondblclick 鼠标双击触发   onmouseover 鼠标移上触发   onmouseout 鼠标离开触发   onmousemove 鼠标移动触发 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-tra
二十三年蝉
2018/02/27
8790
XSS Cheat Sheet
https://portswigger.net/web-security/cross-site-scripting/cheat-sheet
瓦都剋
2020/08/07
2.3K0
Web前端开发JavaScript提高
JS是基于对象的(Object-Based)脚本语言,而不是面向对象(Object-Oriented)中所使用的那个对象,之所以说JS是一门基于对象的编程语言,是因为它没有提供抽象,继承,封装等面向对象语言的很多功能,而是把其他语言所创建的复杂对象统一起来,从而形成一个非常强大的对象系统.
微软技术分享
2022/12/28
2.3K0
长亭WAF XSS防护绕过小记
某次业务上线常规安全测试,有记录操作的功能,猜测存在存储型XSS漏洞,但由于存在长亭WAF被拦截。遂将之前总结的XSS绕过手段逐一测试了下。
瓦都剋
2020/10/27
6.1K1
长亭WAF XSS防护绕过小记
前端day16-JS(WebApi)学习笔记(事件补充、事件冒泡与捕获)
var code = e.keyCode || e.charCode || e.which;
帅的一麻皮
2020/05/05
1.8K0
记对百度翻译的一次爬虫练习
最近简单学习了一下 requests 这个模块,一直没有亲自实战一下,然后就有了这次的实战练习
pankas
2022/08/10
4030
记对百度翻译的一次爬虫练习
js混淆与反混淆
由于设计原因,前端的js代码是可以在浏览器访问到的,那么因为需要让代码不被分析和复制从而导致更多安全问题,所以我们要对js代码进行混淆。
ek1ng
2023/03/08
11.8K0
js混淆与反混淆
面试题-Unicode字符与编码如何互转
说起 Unicode 字符与编码的互转,我们很容易想到 charCodeAt 和 fromCharCode 两个方法。
用户10106350
2022/10/28
4140
JavaScripty依次打印26个英文字母的方法—如何匹配大写或小写
首先想到的是依次打印字符串'ABCDEFGHIJKLMNOPQRSTUVWXYZ'的值,这个没有好讲的。要讲的是str.charCodeAt()和 String.fromCharCode()方法
周陆军博客
2023/05/07
8710

相似问题

TabActivity和onKeyDown

11

String.fromCharCode和CharacterSets

14

onKeyDown和onKeyLongPress

42

onkeydown和自动完成

110

OnKeyDown和OnBackPressed组合

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文