我所发现的是,不同的Web浏览器在关键代码方面存在不一致性。
我有下面的代码,在Safari、Opera和Chrome中按回车键时运行良好,但在Firefox中不行。
我用的是Firefox 9.0.1。
以下是出现问题的两个代码片段:
第一章
// Post something
$('#postDiv').on('keydown', '#posttext', function(e) {
if ((e.keyCode == 13 || e.which == 13) && !event.shiftKey) {
post($(this));
}
});
字符串
// Comment on a post
$('.commenttext').live('keydown', function(e) {
if ((e.keyCode == 13 || e.which == 13) && !event.shiftKey) {
comment($(this));
}
});
型
这两个函数都没有被调用。
我只对e.which
做了更多的测试,注意到当我省略&& !event.shiftKey
时,它可以正常工作-显然Firefox不知道这个命令。还有其他方法吗?我希望用户能够在不提交帖子的情况下按Shift + Enter。我已经尝试了条件if (e.which==13 && e.which!=16)
,但无济于事。
解决方案
首先感谢您的所有答案!当然它必须是e.shiftKey
,而不是event.shiftKey
!现在它可以在所有浏览器中工作(唯一一个我还没有尝试过的是Internet Explorer)。
2条答案
按热度按时间laximzn51#
从http://api.jquery.com/event.which/
event.which属性规范化event.keyCode和event. charCode。建议在键盘按键输入时观察event.which。
你不应该需要使用e.keyCode,你可能会遇到e.which!= 13的问题,但e.keyCode却需要。你是否验证了在将e.keyCode求值从你的控制结构中删除后,问题仍然存在?
gr8qqesn2#
你不需要同时使用
keyCode
和which
,只需要使用which
就可以在所有浏览器中使用:)http://api.jquery.com/event.which/