2013-11-15 3 views
1

Привет Я пытаюсь заставить виджет автозаполнения jQuery UI работать, чтобы он искал совпадения из нескольких атрибутов моего массива, но что-то не работает в моем коде. На данный моментПоиск по нескольким значениям с помощью jquery autocomplete

Идея, что если я наберу «купе», ответ будет «Porsche, Audi, Mercedes». Точно так же я смогу напечатать «911» и получить в ответ «Porsche». Спасибо за вашу помощь.

$(function() { 

var cars = 
[ 
    { "constructor" : "BMW", 
     "model": "Z3", 
     "type": "cabrio" }, 

    { "constructor" : "Porsche", 
     "model": "911", 
     "type": "coupe" }, 

    { "constructor" : "Audi", 
     "model": "A3", 
     "type": "coupe" }, 

    { "constructor" : "Mercedes", 
     "model": "SL500", 
     "type": "coupe" } 
]; 

    $("#quickFind").autocomplete({ 
     source: function(request, response){ 
      var matcher = new RegExp($.ui.autocomplete.escapeRegex(request.term), "i"); 
      response($.grep(cars, function(value) { 
      return matcher.test(value.constructor) || matcher.test(value.model) || matcher.test(value.type); 
     })); 
     } 
    }); 

    }); 

ответ

1

На каждом объекте вашего авто массива отсутствующего в "label" and "value" options, посмотрите: http://jsfiddle.net/DLLVw/77/

$(function() { 

var cars = 
[ 
    { 
     "label" : "BMW - Z3 - cabrio", 
     "value" : "BMWZ3", 
     "constructor" : "BMW", 
     "model": "Z3", 
     "type": "cabrio" }, 

    { 
     "label" : "Porsche - 911 - coupe", 
     "value" : "Porsche911", 
     "constructor" : "Porsche", 
     "model": "911", 
     "type": "coupe" }, 

    { "label" : "Audi - A3 - coupe", 
     "value" : "AudiA3", 

     "constructor" : "Audi", 
     "model": "A3", 
     "type": "coupe" }, 

    { 
     "label" : "Mercedes - SL500 - coupe", 
     "value" : "mercedessl500", 
     "constructor" : "Mercedes", 
     "model": "SL500", 
     "type": "coupe" } 
]; 

    $("#quickFind").autocomplete({ 
     source: function(request, response){ 
      var matcher = new RegExp($.ui.autocomplete.escapeRegex(request.term), "i"); 
      response($.grep(cars, function(value) { 
      return matcher.test(value['constructor']) || matcher.test(value.model) || matcher.test(value.type); 
     })); 
     } 
    }); 

    }); 
+0

Конечно, спасибо :) – Falco

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