onkeydown和onkeyup
键盘事件一般都是绑定给一些可以获取到焦点的对象(比如input)或者是document
onkeydown
表示按键被按下,对于onkeydown来说如果一直按着某个按键不松手,则事件会一直触发,当onkeydown连续触发时,第一次和第二次之间会间隔稍微长一点,其他的会非常地快,这种设计是为了防止误操作的发生。
onkeyup
表示按键被松开,该事件只会触发一次。
为document绑定了onkeydown和onkeyup事件
1 | <script> |
如何判断哪个按键被按下?
可以通过事件对象的keyCode属性来获取按键的编码,从而判断哪个按键被按下
1 | document.onkeydown = function(event){ |
判断A键是否被按下
1 | document.onkeydown = function(event){ |
判断A和ctrl是否同时被按下
在判断两个键是否同时被按下时,我们可能会习惯性地写下面这样的代码:
1 | document.onkeydown = function(event){ |
这种写法是错误的,因为event.keyCode不能同时有两个值,这时我们需要用到事件对象的其它属性,除了keyCode,事件对象中还提供了几个属性:
- altKey
- ctrlKey
- shiftKey
这个三个属性分别用来判断alt、ctrl 和 shift是否被按下,如果被按下则返回true,否则返回false
因此,我们可以这样写:
1 | document.onkeydown = function(event){ |
为一个input绑定onkeydown事件
在文本框中输入内容,属于onkeydown的默认行为,如果在onkeydown中取消了默认行为,则输入的内容不会出现在文本框中,因此我们可以通过这一点来实现文本框中不能输入数字的功能。
1 | window.onload = function(){ |
此时在input中无法输入数字