2

我正在为一个网站制作一个 AutoSuggest 小部件,它的工作方式是当用户在输入文本框中写一些东西时,会显示带有建议的 div,并且用户可以通过鼠标或上下箭头导航它。每个单词都是单独建议的(不像谷歌建议它在整个短语中的位置。

我在使用 Google Chrome 输入框时遇到问题,因为当我按下向上或向下箭头时,浏览器会出现默认行为 - 使用 carret 跳转到文本框的末尾或开头(例如使用 Home 或 End 按钮)。在 Firefox 或 Internet Explorer 上没有这样的效果。我怎么能禁用这个效果?

我从事件处理函数返回“假”,并且还使用了这里的函数http://www.javascripter.net/faq/canceleventbubbling.htm但仍然 carret 在 Chrome 上跳跃...

编辑:在 Safari 上的效果相同...

4

2 回答 2

0

您是否尝试过阻止默认行为?

window.addEventListener('keydown', function(e) {
  e.preventDefault();
  ...
}, false);
于 2011-05-18T16:57:46.050 回答
0

不是一个真正的问题解决方案,但我已经通过使用此功能 http://blog.vishalon.net/index.php/javascript-getting-and-setting-caret-position-in-textarea/ 和在事件之前捕获 carret 位置(或者不是在触发 keydown 事件之前,carret 仍然处于良好位置),然后在事件之后将其设置回来。

于 2011-11-14T22:16:36.470 回答