1

我在内容可编辑的 div 上使用 jquery ui 自动完成功能。使用 @ 作为触发器。问题是,即使我将焦点事件设置为返回 false:

  focus: function () {
     return false;
  },

使用向上和向下箭头时。如果我在第一个项目上并按向上键。或者,如果我在最后一个结果中并使用向下键。jquery ui 自动完成正在清除 div 中的所有 html 元素。

可以在这里看到http://jsfiddle.net/YGP8a/

知道为什么或者我可以做些什么来解决这个问题吗?谢谢!

4

1 回答 1

4

当您在菜单中向上或向下按下时,会调用一个内部函数,该函数会替换您在 div 中的任何内容request.term,从而擦除您的输入,因为正如您在console.log(term)小提琴中看到的那样,response.term只有文本(忽略您的样式输入)。

所以在查看 jquery-ui 自动完成源代码后,就像你重写_rederItem函数一样,我重写了_move函数,它似乎可以工作。

这是您编辑的小提琴http://jsfiddle.net/YGP8a/1/

希望有帮助!

编辑:

为了完整起见,这是您必须添加的内容:

$("#testDiv").data("autocomplete")._move = function( direction, event ) {
    if ( !this.menu.element.is( ":visible" ) ) {
        this.search( null, event );
        return;
    }
    if ( this.menu.isFirstItem() && /^previous/.test( direction ) ||
            this.menu.isLastItem() && /^next/.test( direction ) ) {
            //this._value( this.term ); <-- Here it is!
        this.menu.blur();
        return;
    }
    this.menu[ direction ]( event );
}
于 2013-07-22T16:08:15.157 回答