我对使用jquery autocomplete构建堆栈溢出样式标记感兴趣。
所以主要的操作是:
这里的技巧是每当输入改变时,只改变最后一项。
这意味着如果您获取输入的值,并选择一个查询,则仅
var l = $input.val().split(' ');
l[l.length-1] will be changed
我尝试了monkeypatching jquery autocomplete的_value函数,但没有成功。我意识到即使你向上或向下移动或esc,输入也会搞砸。我正在乞求那些在这种自动完成方面经验丰富的人,让我对此有所了解
答案 0 :(得分:1)
无论如何,我已设法理解源代码并解决我的问题。
基本上monkeypatching jquery.autocomplete的_value函数可以。
(function( $, undefined ) {
/* This is the getter and setter of the value
* When getting, parse and return the last part
* When setting, just set the last part
*/
jQuery.ui.autocomplete.prototype._value = function( value ) {
var originalstr = this.valueMethod.apply( this.element);
if (arguments.length) {
var l = originalstr.split(' ');
l[l.length -1] = arguments[0];
this.valueMethod.apply(this.element, [l.join(' ')]);
}
else {
var l = originalstr.split(' ');
return l[l.length -1];
}
};
} ( jQuery ));
此代码修改自动完成获取的方式并设置输入框内的值