jQuery自动完成在文本区域中禁用上下箭头.为什么



我有一个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-ui

1.9的一个优点是自动完成现在支持可内容div

最新更新