Стиль переполнения стека автозаполнения JQuery UI - PullRequest
1 голос
/ 07 марта 2011

Я заинтересован в создании ввода тегов стиля переполнения стека с использованием автозаполнения jquery.

Итак, основные операции:

  1. Если вы наберете «a», запрос с «a'появится (не проблема, вот как работает автозаполнение jquery)
  2. Если вы нажмете или вверх, чтобы выбрать рекомендацию, поле ввода изменится.

Трюк здесьчто всякий раз, когда изменяется вход, изменяется только последний элемент.

Это означает, что если вы берете значение ввода и выбираете запрос, только

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

Я попытался установить обезьянуФункция _value jquery autocomplete, но безуспешно.Я понял, что даже когда вы двигаетесь вверх или вниз или выходите, ввод также запутывается.Я прошу кого-то, кто имеет опыт в этом автозаполнении, чтобы пролить мне свет на это

1 Ответ

1 голос
/ 07 марта 2011

В любом случае мне удалось понять исходный код и решить мою проблему.

По существу, функция _value jquery.autocomplete выполняет функцию monkeypatching.

(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 ));

Этот код изменяет способ получения автозаполнения и устанавливает значение внутри поля ввода

...