Rem*_*tec 42 javascript keycode
问题:
这是我的代码的起点......
var keyCode = (e.keyCode ? e.keyCode : e.which);
Run Code Online (Sandbox Code Playgroud)
但是,我在keyCode中获得的每个值都不对应于我在网络上看到的任何字符图表.例如,字符"h"给出返回代码104.
KeyCode与CharCode不同吗?哪个代码包含控制字符?我需要转换吗?
如何将输入限制为az AZ并允许JavaScript中需要的键?
Tim*_*own 64
您可以在以下页面找到所有问题的答案.
......但总结如下:
keypress
事件.keypress
下,除IE <= 8之外的所有浏览器都将字符代码存储在事件的which
属性中.大多数但不是所有这些浏览器也将字符代码存储在charCode
属性中.keypress
下,IE <= 8将字符代码存储在keyCode
属性中.这意味着获取对应于按键的字符代码,假设按键事件对象存储在名为的变量中,以下内容将在任何地方都有效e
:
var charCode = (typeof e.which == "number") ? e.which : e.keyCode
Run Code Online (Sandbox Code Playgroud)
这通常会返回一个字符代码,否则为0.在某些情况下,如果不应该,您将获得非零值:
第一个问题的解决方法有点涉及,并且也需要使用该keydown
事件.
nic*_*tic 10
好悲伤.KeyboardEvent.[key,char,keyCode,charCode,它们]已被弃用,或者根据Mozilla的API文档目前都有未解决的错误 - https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent.甚至JQuery也会在这个问题上贬低它,让用户知道它的问题https://api.jquery.com/keydown/.
实际上,104是小写'h'的ASCII码.要获得键入的字符onkeypress的ASCII代码,您可以使用e.which || e.keyCode
,并且您不必担心按住键,因为对于键入的文本,keypress在所有浏览器中自动重复(根据优秀的http:// unixpapa.com/js/key.html).
所以你真正需要的是:
<input id="textbox">
<script type="text/javascript">
document.getElementById('textbox').onkeypress = function(e){
var c = e.which || e.keyCode;
if((c > 31 && c < 65) || (c > 90 && c < 97) || (c > 122 && c !== 127))
return false;
};
</script>
Run Code Online (Sandbox Code Playgroud)
试一试:http://jsfiddle.net/wcDCJ/1/
(ASCII码来自http://en.wikipedia.org/wiki/Ascii)
归档时间: |
|
查看次数: |
52812 次 |
最近记录: |