javascript - 在自动完成选择期间禁用光标移动

标签 javascript

我需要在自动完成选择期间禁用光标移动。我有一个 contentEditable div 作为 friend 的搜索栏。当我输入任何字母时,搜索栏下方会出现自动完成建议。在选择自动完成建议时,我需要使用箭头键进行选择。但这也会将光标移动到搜索栏上,并且还会禁用搜索栏中的任何当前选择。我可以以某种方式禁用 javascript 键盘上某些特定按钮/键的光标移动吗?

注意:

  • 将光标设置在最后一个位置对我来说不是解决方案。
  • 我想禁用左、右、上、下箭头键和回车键

最佳答案

您可以在按键事件上调用 preventDefault(),这些事件的键码对应于箭头键或返回键。这将防止光标移动。

在按下事件期间,event.keyCode 属性将等于以下内容:

  • 37:左
  • 38:向上
  • 39:对
  • 40:向下
  • 13:返回

因此,您可以将事件监听器附加到您的 div 并在自动完成建议处于事件状态时取消这些事件:

var autoCompleteOn = false; //Set this flag in an auto-complete handler
yourDiv.addEventListener("keydown",function(e){
                       //v------all arrow keys------------v     v---Return----v
  if(autoCompleteOn && ((e.keyCode >= 37 && e.keyCode <= 40) || e.keyCode == 13)){
    e.preventDefault();
    return false;
  }
}, false);

注意:为了简单起见,我使用了 addEventListener,但为了兼容性,您还必须使用 attachEvent 或 onkeydown。

示例 jsFiddle .

关于javascript - 在自动完成选择期间禁用光标移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6899345/

相关文章:

javascript - 将变量从 JavaScript 传递到 PHP 代码不起作用

javascript - CKeditor 输出 Html。如何格式化它以正确显示,而不仅仅是蹩脚的 html?

javascript - 如何使用 jQuery 解析表单字段的预定义子集?

javascript - ReactJS——鼠标悬停在子元素上时触发?

javascript:切换一对类

JavaScript/jQuery NetCat

javascript - VS 代码中的 jsDoc @callback

javascript - blockui 与 angular js 中的 ng-tag-input 库不兼容?

javascript - 如何在 ASP.NET 中实现推送 AJAX 模型?

javascript - Angular 5-如何向构造函数添加多个参数?