在js中,var x = event.keyCode; (数字,表示 Unicode 字符代码或 Unicode 键代码)
keyCode 属性返回onkeypress事件触发的键的值的字符代码,或者 onkeydown或 onkeyup事件的键的代码。
两种代码类型的区别是:
- 字符代码 - 表示 ASCII 字符的数字
- 键盘代码 - 表示键盘上真实键的数字
两种类型的值不是都相等的,例如小写字符 "w" 和大写字符 "W" 有相同的键盘代码,因为他们他们键盘上 ( "W" 代码为 "87"),但是它们有不同的字符代码,两个字符输出是不一样的( "w" 和 "W" 字符代码为 "119" 和 "87")
在 Firefox 中,, keyCode 属性在 onkeypress 事件中是无效的 (返回 0)。浏览器兼容问题,可以一起使用 which和 keyCode 属性来解决:
实例代码
var $pageIndex = $("input.page-number");
// 页码输入
$pageIndex.keypress(function(event) {
var key = event.keyCode || event.which;
//enter delete
if(event.keyCode == 13 || event.keyCode == 46){
return true;
}
//0 ~ 9
if(event.keyCode < 48 || event.keyCode >57){
return false;
}else
return true;
}
});
// 页码输入
$pageIndex.keyup(function(){
var total = $("#totalPage").attr("val");
var value = $(this).val();
//中文输入 及 负数 0
if(isNaN(value)){
$(this).val(1);
}else if(parseInt(value)<=0){
$(this).val(1);
}
if(parseInt(value) > parseInt(total)){
$(this).val(total);
}
});
其他的参考
字母和数字键的键码值(keyCode) | |||||||
按键 | 键码 | 按键 | 键码 | 按键 | 键码 | 按键 | 键码 |
A | 65 | J | 74 | S | 83 | 1 | 49 |
B | 66 | K | 75 | T | 84 | 2 | 50 |
C | 67 | L | 76 | U | 85 | 3 | 51 |
D | 68 | M | 77 | V | 86 | 4 | 52 |
E | 69 | N | 78 | W | 87 | 5 | 53 |
F | 70 | O | 79 | X | 88 | 6 | 54 |
G | 71 | P | 80 | Y | 89 | 7 | 55 |
H | 72 | Q | 81 | Z | 90 | 8 | 56 |
I | 73 | R | 82 | 0 | 48 | 9 | 57 |
按下键盘时会触发键盘事件,次序为keydown -> keypress ->keyup。
1、keydown、keypress事件触发在文字还没敲进文本框,这时如果在keydown、keypress事件中输出文本框中的文本,得到的是触发键盘事件前的文本,而keyup事件触发时全部键盘事件的操作已完成,获得的是触发键盘事件后的文本
2、在keyup事件中没法阻止浏览器默许事件,因为在keypress时,浏览器默许行为已完成,即将文字输入文本框(尽管这时还没显示),这个时候不论是preventDefault还是return false,都不能阻止在文本框中输入文字的行为,如要阻止在文本框中输入文字,必须在keydown或keypress时阻止
3、keypress事件与keydown和keyup的主要区别
1)对中文输入法支撑欠好,没法响应中文输入
2)没法响应系统功能键(如delete,backspace)
3)由于前面两个制约,keyCode与keydown和keyup不是很适中