我使用 easyautocomplete 插件(http://easyautocomplete.com/guide),我使用一些自定义 JavaScript 将 keydown 事件绑定(bind)到搜索输入,当用户按下“ENTER”时,该输入将页面重定向到建议页面 , 但即使用户从建议列表中选择一个项目并按 Enter,它也会重定向页面。 easyautocomplete 提供了一个“onKeyEnter”事件,只有当我们从建议中选择一个项目后按下“Enter”时才会触发
所以这是我添加的自定义代码
jQuery("#input_field").keydown( {
if(e.which == 13) {
document.location = "/search_results.php";
}
});
因此,当我们在使用向上箭头和向下箭头键从建议列表中选择任何项目后按 Enter 时,我需要停止此重定向。
easyautocomplete 已经有一个事件处理程序来仅捕获列表建议上的“Enter”按下,即当我们在手动输入内容后简单地在输入字段上按下 Enter 时不会捕获该事件函数
那么我能做些什么来防止在那个 eventHandler 的函数中重定向
onKeyEnter : function(){
// stop redirect
.........
.......
}
我不想从输入中永久删除“重定向”操作,只是想在特殊情况下避免它,这就是为什么我不能使用 .off()
谢谢!
更新
我不确定这是否是最好的方法,但 window.stop()
为我完成了这项工作
jQuery("#input_field").keydown( {
if(e.which == 13) {
document.location = "/search_results.php";
}
});
onKeyEnter : function(){ // press Enter on the search suggestions
window.stop(); // stop the redirecting
}
谢谢!
最佳答案
你可以像这样引入全局变量:
let canRedirect = true;
对于停止重定向,将其设置为false
。在 keypress
处理程序中,只需扩展条件:
if (e.which == 13 && canRedirect) {}
关于javascript - 避免之前的 javascript 代码绑定(bind)的重定向操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51610049/