浏览 4872 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (1) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-09-21
最后修改:2009-10-26
不同的浏览器中的事件监听机制是不同的,以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),就可以取出按下的值了。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-09-27
去看看Jquery是怎么判断的呀,看看它的代码
|
|
返回顶楼 | |
发表时间:2009-09-27
你没搞清楚ff跟ie事件的差别。
var keypress = function(){ var k = window.event.keyCode; } 改成 var keypress = function(e){ var e = e || window.event; var k = e.keyCode; } |
|
返回顶楼 | |