jQuery自动完成禁用textarea中的向上/向下箭头。为什么?
问题描述:
我有一个应用了jQuery ui自动完成插件的jQuery textarea。我注意到,即使未显示自动填充建议,使用箭头上下移动也不起作用。只有正确和左侧。jQuery自动完成禁用textarea中的向上/向下箭头。为什么?
任何想法为什么以及如何解决?这是一个选项吗?当自动填充选项打开时,我明白上下是被禁用的,但是如果他们不打开为什么禁用?
由于
答
的自动填充实施结合该插件被施加到元件本身上的“KEYDOWN”事件,并且它防止默认行为。
我猜这个插件打算用在文本字段上,而不是textarea。
this.element
...
.bind("keydown.autocomplete", function(event) {
if (self.options.disabled || self.element.propAttr("readOnly")) {
return;
}
suppressKeyPress = false;
var keyCode = $.ui.keyCode;
switch(event.keyCode) {
...
case keyCode.UP:
self._move("previous", event);
// prevent moving cursor to beginning of text field in some browsers
event.preventDefault();
break;
case keyCode.DOWN:
self._move("next", event);
// prevent moving cursor to end of text field in some browsers
event.preventDefault();
break;
答
我能够使用ISOPEN布尔追踪自动完成组件的状态,以解决此问题的自动完成功能的unminified版本。
这在文件的顶部:
(function($, undefined) {
var requestIndex = 0;
var isOpen = false; // NEW
然后在_suggest函数的顶部:
isOpen = true; // NEW
然后在接近函数的顶部:
isOpen = false; // NEW
然后在键绑定功能中:
case keyCode.UP:
self._move("previous", event);
if (isOpen) // NEW
event.preventDefault(); // NEW
break;
case keyCode.DOWN:
self._move("next", event);
if (isOpen) // NEW
event.preventDefault(); // NEW
break;
这应该可能被折叠成真正的版本,但我确定如何去做到这一点。
答
看起来这将是固定在即将到来的1.9版本:
http://bugs.jqueryui.com/ticket/7639
您可以编辑当前的发行版本,或尝试不完整的1.9:
https://github.com/jquery/jquery-ui
一1.9的好处是autocomplete现在支持contenteditable divs。
不错的解决方案。我想知道他们是否已经在UI 1.9中解决了这个问题。 – Hawkee