0

Может ли кто-нибудь помочь мне в этом?JQuery Autocomplete Поиск по каждому слову first char

Автозаполнение должно основываться на первой букве каждого слова в предложении.

Например

Если я ищу «с»

результата должен быть:

http://i.stack.imgur.com/9H9ma.gif

Результат должен быть основан на «х» каждое слово первого полукокса на предложение.

Помогите мне в этом ..

Заранее спасибо.

Пробовал:

$(document).ready(function() { 
     $("#request").autocomplete({ 
      source: function(req, responseFn) { 
      var re = $.ui.autocomplete.escapeRegex(req.term); 
      var matcher = new RegExp("\\b" + re, "i"); 
      var a = $.grep(charity_names, function(item,index){ 
       return matcher.test(item); 
      }); 
      responseFn(a); 
      }, delay:0 
     }); 
    }); 

Для Highting текста я использовал этот код:

/* Автозаполнение подсветка */

String.prototype.replaceAt = function(index, char) { 
    return this.substr(0, index) + "<span style='font-weight:bold;color:#333;'>" + char + "</span>"; 
} 
$.ui.autocomplete.prototype._renderItem = function(ul, item) { 
    this.term = this.term.toLowerCase(); 
    var resultStr = item.label.toLowerCase(); 
    var t = ""; 
    while (resultStr.indexOf(this.term) != -1) { 
     var index = resultStr.indexOf(this.term); 
     t = t + item.label.replaceAt(index, item.label.slice(index, index + this.term.length)); 
     resultStr = resultStr.substr(index + this.term.length); 
     item.label = item.label.substr(index + this.term.length); 
    } 
    return $("<li></li>").data("item.autocomplete", item).append("<a style='padding:4px 4px; display:block; width:97.3%;'>" + t + item.label + "</a>").appendTo(ul);  
}; 

/* Autocomplete highlighting Ends here*/ 
+0

Я пробовал с кодом ниже $ (document) .ready (function() { $ («# request»). Autocomplete ({ source: function (req, responseFn) { var re = $ .ui.autocomplete.escapeRegex (req.term); var matcher = новый RegExp ("\\ b" + re, "i"); var a = $ .grep (charity_names, function (item, index) { return matcher.тест (пункт); }); responseFn (a); }, Задержка: 0 }); }); – Jagadeesh

+0

Что вы используете на бэкэнд PHP, Java ?? – Zafta

+0

В приложении Java, но прямо сейчас я использую HTML и JQuery для создания прототипа. – Jagadeesh

ответ

0

Ладно, пару точек на код:

  • Вы чрезмерны это очень много. Использование регулярного выражения может значительно упростить ваш _renderItem и избавиться от всех этих звонков indexOf и substr. Фактически, вы уже используете регулярное выражение, которое вам нужно в функции source.
  • В настоящий момент все будет заменено строчным. Regex будет «magically» решить это для вас
  • Вы отбрасываете все после матча term. Опять же, регулярное выражение «волшебство» устраняет это без дополнительных усилий.
  • Как правило, неверно переписывать библиотеку prototype. jQueryUI имеет отличную фабрику виджета, и это очень проста в использовании.

Таким образом, решения вышеуказанных пунктов, вы могли бы сделать что-то вроде:

$.widget("my.customAutocomplete", $.ui.autocomplete, { 
    _renderItem: function(ul, item) { 
     return $("<li>").append(
       $("<a>").html(
        item.label.replace(
          new RegExp("\\b" + this.term, "i"), 
          "<span style='font-weight:bold;color:#333;'>$&</span>" 
        ) 
       )).appendTo(ul); 
    } 
}); 

Пара это с source фильтрации вы уже должны получить на то, что нам нужно

Here's an example fiddle (с HTML спасаясь тоже не уверен, что это было намеренно опущено в вашем примере или нет)

 Смежные вопросы

  • Нет связанных вопросов^_^