2016-08-02 12 views

Antwort

1

Standardmäßig Autocomplete Suchelemente, die Zeichenfolge enthalten, beginnt nicht mit.

$('#customer-search').autocomplete({ 
    source: function(request, response) { 
     var filtered = $.map(data, function(item) { 
      if(item.value.toLowerCase().startsWith(request.term.toLowerCase())) { 
       return item; 
      } 
      else { 
       return null; 
      } 
     }); 
     response(filtered); 
    } 
}); 
+0

startsWith unterstützt einige Browser nicht –

+0

Dies gilt nicht für das Thema. Es ist leicht zu überprüfen und durch etwas wie this.indexOf (nadel) == 0 zu ersetzen. –

+0

Ja. es ist besser, eine gute Lösung zu bieten, wie Sie sagten oder sonst item.match! == null :) –

1

Versuchen Sie, den regulären Ausdruck im Namespace in der "Suche" -Methode zu ändern.

Bitte finden Sie Antwort in jsfiddle.net/LCv8L/800/

+0

Danke, konnte ich die Änderung nicht verstehen, könnten Sie bitte – user123

+0

ausarbeiten Wie gesagt, wir können manuell die Suchabfrage machen und die Quellantwort zurückgeben mit regulären Ausdrücken. Hier haben sie eine Methode für die Quelle anstelle von JSON-Array gebunden und geben die Quelle jedes Mal zurück, indem sie mit der regulären Eingabe filtern, die der gegebenen Eingabe entspricht –

1

Führen Sie diesen Code in Ihre jsfiddle es funktioniert, wie Sie wollen .. :) // verwenden regulären Ausdruck besseren Weg, dies zu verhindern ist.

var wordlist= [ 
     "Afghanistan", 
     "Albania", 
     "Algeria", 
     "American Samoa", 
     "Andorra", 
     "Angola", 
     "Anguilla", 
     "Antarctica", 
     "Antigua and Barbuda", 
     "Argentina", 
     "Armenia", 
     "Aruba", 
     "Australia", 
     "Austria", 
     "Azerbaijan" 
    ] ; 

    $("#customer-search").autocomplete({ 

     source: function(req, responseFn) { 
      var re = $.ui.autocomplete.escapeRegex(req.term); 
      var matcher = new RegExp("^" + re, "i"); 
      var a = $.grep(wordlist, function(item,index){ 
       return matcher.test(item); 
      }); 
      responseFn(a); 
     } 
    });