JavaScript监听textarea中按键

    不同的浏览器中的事件监听机制是不同的,以onKeyPress事件为例。

有个textarea,

<textarea id="text"></textarea>

    经常会定义onKeyPress="keypress();",并定义以下方法。

var keypress = function(){
    var k = window.event.keyCode;
}

    实际上这类代码在firefox下无效。

那么修改为如下方式:

    onKeyPress="keypress(event);"

var keypress = function(event){
    var k = event.keyCode;
}

    还是有问题,按下k后,在IE中取值为107,FF下取值则为0。

    将keyCode改为charCode试试。

var k = event.charCode;

    IE下取值为undefined,FF下取值为107了

    或许可以做判断

if(是IE)
    var k = event.keyCode;
else if(是FF)
    var k = event.charCode;

 

    不过,如果有组合键的话,这种方法也不行了。

    当按下Ctrl+k时,

    在IE中,keyCode为11,charCode为undefined

    在FF中,keyCode为0,charCode为107

 

    这里我使用的办法是JQuery。

    $("#text").bind("keyPress",function(event){
         var k = event.which;
    });

     这里使用的which就不论在IE下还是FF中,是单一按键还是组合键了,其值都是是107

    然后使用String.fromCharCode(k),就可以取出按下的值了。

你可能感兴趣的:(JavaScript,jquery,浏览器,IE,firefox)