jquery ui自动完成堆栈溢出样式

时间:2011-03-07 06:18:21

标签: jquery jquery-autocomplete

我对使用jquery autocomplete构建堆栈溢出样式标记感兴趣。

所以主要的操作是:

  1. 如果您输入“a”,则会显示带有“a”的查询(没问题,这就是jquery自动完成的工作原理)
  2. 如果您按下或向上按下以选择推荐,则输入框会更改。
  3. 这里的技巧是每当输入改变时,只改变最后一项。

    这意味着如果您获取输入的值,并选择一个查询,则仅

    var l = $input.val().split(' ');
    l[l.length-1] will be changed
    

    我尝试了monkeypatching jquery autocomplete的_value函数,但没有成功。我意识到即使你向上或向下移动或esc,输入也会搞砸。我正在乞求那些在这种自动完成方面经验丰富的人,让我对此有所了解

1 个答案:

答案 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 ));

此代码修改自动完成获取的方式并设置输入框内的值