автоматическое заполнение jqueryui: записи списков с критериями поиска в середине

Я использую виджет автоматического заполнения jqueryui для автоматического заполнения поля 'страны', но я сталкиваюсь с проблемой. Предположим, что пользователь входит "в", я хочу, чтобы jqueryui перечислил страны как 'Индия', 'Индонезия', которые запускаются с 'в', но это также перечисляет страны, которые имеют 'в' где-нибудь на имя (как: Аргентина). Как я могу решить эту проблему?

jQuery(".autocomplete").autocomplete({
    source: CountrySuggestions, //CountrySuggestions is an array in javascript containing the list of countries
    minLength: 2
});

Akshey

5
задан skaffman 31 March 2010 в 13:20
поделиться

1 ответ

К сожалению, похоже, что автозаполнение jQueryUI было сделано, чтобы не допустить этого в источнике массива. Однако вы можете подключить функцию плагина _initSource для принудительного включения токена регулярного выражения «начинается с» ( ^ ) при поиске, как показано ниже.

Я думаю, что это, вероятно, было упущено из виду, потому что большая часть его использования была связана с удаленным извлечением. В любом случае, это не очень хорошее решение, но из-за функции удаления регулярных выражений это единственное решение, которое пришло в голову.

$.ui.autocomplete.prototype._initSource = function() {
  var array,
    url;
  if ( $.isArray(this.options.source) ) {
    array = this.options.source;
    this.source = function( request, response ) {
      // escape regex characters
      var matcher = new RegExp( "^"+$.ui.autocomplete.escapeRegex(request.term), "i" );
      response( $.grep( array, function(value) {
        return matcher.test( value.label || value.value || value );
      }) );
    };
  } else if ( typeof this.options.source === "string" ) {
    url = this.options.source;
    this.source = function( request, response ) {
      $.getJSON( url, request, response );
    };
  } else {
    this.source = this.options.source;
  }
};

$("#countries").autocomplete({
  source: ["India","Indonesia","Argentina"],
  minLength: 2
});
3
ответ дан 15 December 2019 в 06:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: