javascript - 避免之前的 javascript 代码绑定(bind)的重定向操作

标签 javascript jquery easyautocomplete

我使用 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/

相关文章:

javascript - Firebase Web 应用程序的管理员 View : How To

javascript - 如何安装 fay?

javascript - 如何使用 dashcode 将 Quicktime 电影嵌入到 iPhone Web 应用程序中?

javascript - 页内 anchor 链接的两个脚本之间的冲突

javascript - jQuery 自动完成 - 防止调用特定按键(左右箭头)

javascript - EasyAutocomplete 的自定义匹配公式

javascript - 从外部触发 jquery 插件中的事件

javascript - 在表格行中添加垂直滚动

javascript - onclick时扩展css的高度并使用jQUERY关闭