javascript - 如何在下拉列表 "options"之间向下或向上键盘?

标签 javascript events dom keyboard

我有一个自定义的基于 ajax [div] 的动态下拉列表。

我有一个[输入]框; onkeyup , 运行 Ajax 搜索,返回 div 中的结果s 并在使用 innerHTML 时退缩.这些div都有亮点onmouseover因此,典型的成功搜索会产生以下结构(请原谅半代码):

[input]
 [div id=results] //this gets overwritten contantly by my AJAX function
  [div id=result1 onmouseover=highlight onclick=input.value=result1]
  [div id=result2 onmouseover=highlight onclick=input.value=result2]
  [div id=result2 onmouseover=highlight onclick=input.value=result2]
 [/div]

有效。

但是,我遗漏了常规 HTML 元素背后的重要功能。我无法在“选项”之间按下或按下键盘。

我知道 javascript 处理键盘事件但是;我一直没能找到一个好的指南。 (当然,后续的问题最终会是:我可以使用 <ENTER> 来触发那个 onclick 事件吗?)

最佳答案

您需要做的是使用 id="results" 将事件监听器附加到 div。您可以在创建 div 时通过添加 onkeyuponkeydown 等属性来实现,也可以使用 JavaScript 附加这些属性。

我的建议是使用像 YUI 这样的 AJAX 库, jQuery , Prototype等,原因有二:

  1. 听起来您正在尝试创建一个 Auto Complete大多数 AJAX 库应该提供的控件。如果您可以使用现有组件,您将节省很多时间。
  2. 即使您不想使用库提供的控件,所有库都提供事件库,以帮助隐藏不同浏览器提供的事件 API 之间的差异。

Forget addEvent, use Yahoo!’s Event Utility很好地总结了事件库应该为您提供什么。我很确定 jQuery、Prototype 等提供的事件库。阿尔。提供类似的功能。

如果那篇文章超出了您的理解范围,请查看 this documentation先重读原文(使用事件库后发现文章更有意义)。

其他一些事情:

  • 与将 onkeyup 等属性写入 HTML 相比,使用 JavaScript 可以为您提供更多的控制权。除非您想做一些非常简单的事情,否则我会使用 JavaScript。
  • 如果您编写自己的代码来处理键盘事件 good key code reference真的很方便。

关于javascript - 如何在下拉列表 "options"之间向下或向上键盘?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4884/

相关文章:

Php SimpleXML 在父级的任何级别找到特定的子节点

javascript - 我根本无法让 cytoscape.js 显示我的图表

javascript - 使用 getDerivedStateFromProps 获取 API 数据导致组件渲染多次

html - 浏览器如何解决冲突的类?

javascript - 使用 JavaScript 使用 JSON 填充 HTML

javascript - 从 JavaScript 中的事件监听器调用访问对象的属性

javascript - 在图像上添加动态文本

Javascript-显示用户输入数组的函数

java - JSF 中的 CDI 全局事件处理 (javax.enterprise.event)

.net - 为什么事件在 .NET 中没有返回类型?