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