Javascript jquery冲突:“;右箭头”;和“;单引号&x201D;在按键中获得相同的按键代码

Javascript jquery冲突:“;右箭头”;和“;单引号&x201D;在按键中获得相同的按键代码,javascript,jquery,Javascript,Jquery,类似于这个问题,但有点不同 他在使用javascript,而我在使用jquery。 我不能使用keydown事件。我只想在按键事件中管理它 我希望允许使用右箭头键(&其他导航键),但不允许输入单引号。两人的密码都是39 $(document).ready(function () { $(".InjectionSafe").keypress(InjectionSafe); }); function InjectionSafe(evt) { var ch

类似于这个问题,但有点不同

他在使用javascript,而我在使用jquery。 我不能使用keydown事件。我只想在按键事件中管理它

我希望允许使用右箭头键(&其他导航键),但不允许输入单引号。两人的密码都是39

 $(document).ready(function () {
    $(".InjectionSafe").keypress(InjectionSafe);
    });

    function InjectionSafe(evt) {
        var charCode = (evt.which) ? evt.which : evt.keyCode;
        console.log(charCode);
        if (charCode === 9 || charCode == 8 || charCode == 46 // TAB , backspace, delet, left arrow and right arrow
            || charCode == 37 ) { //was pressed
            return true;
        }
        //if (!(charCode != 222 && charCode != 188 && charCode != 190 && charCode!=39)) { // ' < >
        if (!(charCode != 60 && charCode != 62 && charCode != 39)) { // ' < >
            return false;
        }
        return true;
    }
$(文档).ready(函数(){
$(“.InjectionSafe”)。按键(InjectionSafe);
});
函数注入安全(evt){
var charCode=(evt.which)?evt.which:evt.keyCode;
console.log(charCode);
if(charCode==9 | | charCode==8 | | charCode==46//TAB、backspace、delet、左箭头和右箭头
||charCode==37){//已按下
返回true;
}
//如果(!(charCode!=222&&charCode!=188&&charCode!=190&&charCode!=39)){/'<>
如果(!(charCode!=60&&charCode!=62&&charCode!=39)){/'<>
返回false;
}
返回true;
}
更新小提琴: 键入内容并使用导航键


更新:我可以确认这个问题只存在于firefox中(我的版本是59.0.1)。也就是说,chrome和opera可以正常工作。

我在firefox中玩来玩去,看看发生了什么

以下是我得到的:

您可以检查
originalEvent.key
查看实际按下的键

如果按了
originalEvent.key=“””

如果按下向右箭头,
originalEvent.key=“ArrowRight”

$(文档).on('keypress',e=>{
var charCode=e.which?e.which:e.keyCode;
$('body').html(charCode);
if(charCode==39){
如果(e.originalEvent.key='ArrowRight'){//Right arrow
$('body')。追加('p>右箭头

'); }否则{ //单引号 $('body')。追加('p>单引号

'); } } });

箭头键仅由
keydown
keyup
触发,而非
keypress
您是否尝试了您提供的链接中的任何解决方案?例如,将keypress更改为keydown?@scraappy我只想用按键来管理它。请参阅我的代码与link@Zenoo正如你所说的,我希望右箭头键不应该触发按键,但在Firefox中是这样做的