【问题标题】:Avoid the redirect action bind by previous javascript code避免以前的 javascript 代码绑定的重定向操作
【发布时间】:2018-07-31 09:30:05
【问题描述】:

我使用easyautocomplete插件(http://easyautocomplete.com/guide),我使用一些自定义JavaScript绑定keydown事件来搜索输入,当用户按下“ENTER”时将页面重定向到建议页面 , 但即使用户从建议列表中选择一个项目并按 Enter,它也会重定向页面。 easyautocomplete 提供了一个“onKeyEnter”事件,只有在我们从建议中选择一个项目后按下“Enter”时才会触发

这是我添加的自定义代码

 jQuery("#input_field").keydown( {
  if(e.which == 13) {
    document.location = "/search_results.php";
  }
});

因此,当我们通过向上箭头和向下箭头键从建议列表中选择任何项目后按 Enter 时,我需要停止此重定向。

easyautocomplete 已经有一个事件处理程序来捕获仅在列表建议上按“Enter”,即当我们在手动编写内容后在输入字段上按 Enter 时不会捕获事件函数

那么我能做些什么来防止该事件处理程序的函数中的重定向

 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 
        }

谢谢!

【问题讨论】:

    标签: javascript jquery easyautocomplete


    【解决方案1】:

    你可以像这样引入全局变量:

    let canRedirect = true;
    

    对于停止重定向,将其设置为false。在keypress 处理程序中只需扩展条件:

    if (e.which == 13 && canRedirect) {}
    

    【讨论】:

    • 我应该在哪里定义canRedirect变量?,我想我需要查看easyautocomplete插件的javascript并找到定义变量的正确位置,并且每次更新时也需要添加它插件,有没有更好的解决方案?,谢谢
    • 其实我想了很久才发现这个方法不能解决我的问题,即使把代码放在easyautocomplete的javascript中,
    猜你喜欢
    • 1970-01-01
    • 2023-02-07
    • 2020-08-24
    • 1970-01-01
    • 1970-01-01
    • 2011-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多