不同浏览器中的关键代码?jQuery

chy5wohz  于 5个月前  发布在  jQuery
关注(0)|答案(2)|浏览(66)

我所发现的是,不同的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)。

laximzn5

laximzn51#

http://api.jquery.com/event.which/
event.which属性规范化event.keyCode和event. charCode。建议在键盘按键输入时观察event.which。
你不应该需要使用e.keyCode,你可能会遇到e.which!= 13的问题,但e.keyCode却需要。你是否验证了在将e.keyCode求值从你的控制结构中删除后,问题仍然存在?

gr8qqesn

gr8qqesn2#

你不需要同时使用keyCodewhich,只需要使用which就可以在所有浏览器中使用:)
http://api.jquery.com/event.which/

相关问题