我有一个jQuery文本区与jQuery ui自动完成插件应用。我注意到,即使没有显示自动补全建议,用箭头上下移动也不起作用。只有左和右。
知道为什么和如何解决吗?这是一个选择吗?当自动完成选项打开时,我理解上下被禁用,但如果它们不打开,为什么禁用?
谢谢
我能够在Autocomplete的未缩小版本中使用isOpen布尔来跟踪Autocomplete组件的状态来解决此问题。
在文件的最上面:
(function( $, undefined ) {
var requestIndex = 0;
var isOpen = false; // NEW
在_suggest函数的顶部:
isOpen = true; // NEW
然后在close函数的顶部:
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;
这可能会被折叠到真正的版本中,但我不确定如何去实现它。
自动完成实现将'keydown'事件绑定到插件应用的元素本身上,并阻止默认行为。
我猜插件的目的是用于文本字段,而不是文本区域放在首位。
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;
看起来这将在即将到来的1.9版本中修复:
http://bugs.jqueryui.com/ticket/7639您可以编辑当前发布版本或尝试不完整的1.9版本:
https://github.com/jquery/jquery-ui1.9的一个优点是自动完成现在支持可内容div