我在内容可编辑div上使用jquery ui自动完成功能。使用@作为触发器。问题是即使我将焦点事件设置为返回false:
focus: function () {
return false;
},
使用向上和向下箭头时。如果我在第一个项目并按下向上键。或者如果我在最后的结果并使用向下键。 jquery ui autocomplete正在清除div中的所有html元素。
可在此处查看http://jsfiddle.net/YGP8a/
知道为什么或者我能做些什么来解决这个问题?谢谢!
答案 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 );
}