我在内容可编辑 div 上使用 jquery ui 自动完成功能。使用@作为触发器。问题是,即使我将焦点事件设置为返回 false:
focus: function () {
return false;
},
使用向上和向下箭头时。如果我在第一个项目上并按向上键。或者,如果我在最后一个结果上并使用向下键。 jquery ui 自动完成正在清除 div 内的所有 html 元素。
可以在这里看到http://jsfiddle.net/YGP8a/
知道为什么或者我可以做些什么来解决这个问题吗?谢谢!
最佳答案
当您按向上或向下键退出菜单时,会调用一个内部函数,该函数会用 request.term
替换 div 中的所有内容,从而删除您的输入,因为正如您在你的 fiddle 的 console.log(term)
, response.term
只有文本(忽略你的样式输入)。
因此,在查看了 jquery-ui 自动完成源代码之后,就像您重写 _rederItem
函数一样,我重写了 _move
函数,它似乎可以工作。
这是你编辑过的 fiddle 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 );
}
关于Jquery UI 自动完成向上键清除我的 div 中的 html,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17735378/