手动触发jquery keyup事件传递错误的keycode



我有一个输入,我想让用户通过按enter键或单击屏幕上的其他任何位置来保存文本。当用户按下回车键时,获取要处理的代码是没有问题的。但我想通过在用户点击时触发jquery keyup事件来处理相同的代码,就像他们在输入框上按Enter一样。这个理论并没有给我带来任何问题,但键代码要么没有被正确传递,要么在点击时被正确解释。当我提醒被解释的按键代码时,我会得到一个"1",这并不等同于任何按键。我做错了什么?

$(document).on("click","body",function(e){      
if(e.target.id!="openInput"){ //Indicates user has clicked out away from the input
if($(".attributeEdit")[0]){ //This is a unique class added 
var i = $.Event('keyup');
i.which = 13; 
$(".attributeEdit").trigger(i); //Have also tried triggering off #openInput, too with no success
}
}
});
$(document).on("keyup",".attributeEdit",function(){ 
var keycode = (event.keyCode ? event.keyCode : event.which);
if(keycode == '13'){
do stuff; 
}
else{
alert("keycode: " + keycode);  //This results in a "1" every time user clicks away
}
});

我使用Hiren Raiyani的函数调用建议找到了最终目标的解决方案。它实际上并没有回答最初的问题,但既然它解决了我的问题,我希望这对其他搜索者有用。我创建了一个函数来"做事",这样,我可以在按下Enter键和单击鼠标后调用该函数。

function doStuff(x,y){
do stuff
}
$(document).on("click","body",function(e){      
if(e.target.id!="openInput"){ //Indicates user has clicked out away from the input
if($(".attributeEdit")[0]){ //This is a unique class added 
doStuff(x,y);
}
}
});
$(document).on("keyup",".attributeEdit",function(){ 
var keycode = (event.keyCode ? event.keyCode : event.which);
if(keycode == '13'){
doStuff(x,y); 
}
});

最新更新