谷歌浏览器取消向上和向下箭头事件

时间:2011-04-17 14:30:50

标签: javascript google-chrome javascript-events safari

我正在为网站制作一个AutoSuggest小部件,其工作方式是当用户在输入文本框中写入内容时,会显示带有建议的div,并且用户可以通过鼠标或向上和向下箭头浏览它。每个单词都是分开建议的(不像在谷歌文章中看到整个短语。) 我在使用Google Chrome输入框时遇到问题,因为当我向上或向下按箭头时,会出现浏览器的默认行为 - 将carret跳到结尾或文本框的开头(如Home或End按钮)。 Firefox或Interet Explorer没有这样的效果。我怎么能禁用这种效果?
我从事件处理函数返回'false',并且还使用了来自http://www.javascripter.net/faq/canceleventbubbling.htm的函数,但是carret仍然在Chrome上跳过......

编辑:对Safari的效果相同......

2 个答案:

答案 0 :(得分:0)

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

window.addEventListener('keydown', function(e) {
  e.preventDefault();
  ...
}, false);

答案 1 :(得分:0)

对于一个问题不是一个真正的解决方案,但我已经通过使用这个函数做了一个解决方法 http://blog.vishalon.net/index.php/javascript-getting-and-setting-caret-position-in-textarea/ 并且在事件发生之前(或者在keydown事件被解雇之前不会很好地抓住Carret仍处于良好位置)然后在事件发生之后将其设置回来。