0

아무도 도와 드릴 수 있습니까?Jquery 자동 완성 각 단어 첫 글자를 기준으로 검색

자동 완성은 문장의 각 단어의 첫 글자를 기반으로해야합니다. 예를

를 들어

내가

결과가 있어야한다 "S"를 찾고 있어요 경우 :

결과는 각 단어의 "S"첫 문자를 기반으로해야

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

문장에.

도와주세요 ..

미리 감사드립니다.

는 시도 :

/* 자동 완성 강조 */

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() { $ ("# 요청"). 자동 완료 ({ 소스 : 함수 (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.시험 (항목); }}); responseFn (a); }, 지연 시간 : 0 }); }}); – Jagadeesh

+0

백엔드 PHP, Java에서 무엇을 사용하고 있습니까 ?? – Zafta

+0

Java 응용 프로그램에서,하지만 지금은 프로토 타입 디자인을위한 HTML 및 Jquery를 사용하고 있습니다. – Jagadeesh

답변

0

좋아, 코드에 점 몇 :

$(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 위해 나는이 코드를 사용하고 있습니다 :

  • 너는 과장되어있어. 많이 먹었어. 정규 표현식을 사용하면 _renderItem을 크게 단순화하고 indexOfsubstr 호출을 모두 제거 할 수 있습니다. 사실 source 함수에서 필요한 정규 표현식을 이미 사용하고 있습니다.
  • 현재 모든 것이 소문자로 바뀝니다. 정규식은 당신을 위해 이것을 "마술처럼"해결할 것입니다.
  • term이 일치하면 모든 것이 폐기됩니다. 다시 말하지만, 정규식 "마법"은 추가 노력없이 이걸 없애 버립니다.
  • 일반적으로 라이브러리 prototype을 직접 덮어 쓰는 것은 좋지 않습니다. jQueryUI는 훌륭한 위젯 팩토리를 가지고 있으며, 매우 유용합니다.. source

    $.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); 
        } 
    }); 
    

    커플이 이미 필터링 HTML 탈출로 (우리가

    Here's an example fiddle을 필요로 무엇을 얻을 수있다 :

그래서, 위의 사항을 해결, 당신은 뭔가를 할 수 , 너무, 귀하의 예에서 의도적으로 생략되었는지 확실하지 않음)