javascript之 keydown和keypress的区别

虽然从字面理解, KeyDown是按下一个键的意思, 但实际上二者的根本区别是, 系统由KeyDown返回键盘的代码, 然后由TranslateMessage函数翻译成字符, 由KeyPress返回字符值. 因此在KeyDown中返回的是键盘的代码, 而KeyPress返回的是字符的ASCII码. 所以根据你的目的, 如果只想读取字符, 用KeyPress, 如果想读各键的状态, 用KeyDown。
keydown:用户在键盘上按下某按键时发生,返回键的代码。一直按着某按键则会不断触发(opera浏览器除外)。
keypress:用户按下一个按键,并产生一个字符时发生(也就是不管类似shift、alt、ctrl之类的键,就是说用户按了一个能在屏幕上输出字符的按键keypress事件才会触发。如按下shift+A,只会在按下A键时触发,且jquery的event.which为65(大写字母A的ASCII码),但keydown会在按下shift和A键时都触发,且分别返回16(shift键的代码)、65(A键的代码))。一直按着某按键则会不断触发。
keyup:用户释放某一个按键时触发,返回键的代码。

限制input元素只能输入数字

$.fn.extend({
    limitNumber: function () {
        this.keydown(function (event) {
             //数字、回退、删除、ctrl键、左右方向键、F5
              if ((event.which < 48 || event.which > 57) && $.inArray(event.which, [8, 17, 46, 37, 39, 116]) === -1) {
                //Ctrl+V阻止默认行为
                 (!event.ctrlKey || event.which === 86) && event.preventDefault();
              }
         }).contextmenu(function (event) {   //禁止右键点击弹出菜单
             event.preventDefault();
        });
        return this;
      }
 });

欢迎分享本文,转载请保留出处:前端ABC » javascript之 keydown和keypress的区别

分享到:更多 ()

发表评论 0