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