Jquery UI自动完成键清除我的div中的html

时间:2013-07-18 22:55:01

标签: jquery jquery-ui jquery-ui-autocomplete

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

  focus: function () {
     return false;
  },

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

可在此处查看http://jsfiddle.net/YGP8a/

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

1 个答案:

答案 0 :(得分:4)

当您向上或向下按菜单时,会调用一个内部函数,用request.term替换div中的任何内容,从而删除您的输入,因为您可以在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 );
}