我有一个应用了jQuery ui autocomplete插件的jQuery textarea。我注意到即使没有显示自动填充建议,使用箭头上下移动也不起作用。只有左右。
任何想法为什么以及如何解决?这是一个选择吗?我知道在自动填充选项打开时上下都被禁用,但如果它们未打开则为什么禁用?
由于
答案 0 :(得分:1)
我能够使用isOpen布尔值在未完全版本的自动完成中解决此问题,以跟踪自动完成组件的状态。
这位于文件的最顶层:
(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 :(得分:0)
自动填充实施绑定' 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;
答案 2 :(得分:0)
看起来这将在即将发布的1.9版本中修复:
http://bugs.jqueryui.com/ticket/7639
您可以编辑当前版本或尝试不完整的1.9:
https://github.com/jquery/jquery-ui
关于1.9的一个好处是autocomplete现在支持contenteditable div。