2013-11-24 2 views
0

Я использую JQuery tokeninput, чтобы заполнить свои входные данные с сервера, например:фильтр конкретные элементы в массиве

$(".input").tokenInput("http://shell.loopj.com/tokeninput/tvshows.php", { 
      prePopulate: [{id: 123, name: "Slurms MacKenzie"}], 
     }); 

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

<input type="text" id="1" class="input" name="blah" /> 
<input type="text" id="2" class="input" name="blah" /> 

     var array = [ 
      {id: 123, name: "Smith", input: "1"}, 
      {id: 156, name: "Kanye", input: "2"}, 
      {id: 134, name: "MacKenzie", input: "1"} 
      ] 

    $(".input").tokenInput("http://shell.loopj.com/tokeninput/tvshows.php", { 
      prePopulate: array 
     }); 

Как вы можете видеть, я добавил в массиве input где id О.Д. вход defiend элемент должен быть appendend, например:

{id: 156, name: "Kanye", input: "2"} 

Должно быть только assigend для ввода с id 2

Так как я могу фильтровать только записи массива, где $ (это) .attr («ID») имеет такое же значение, как вход: в массиве ?

Благодаря скрипка: http://jsfiddle.net/v394w/7/

+0

Sorry этого права скрипки http://jsfiddle.net/v394w/7/ –

+0

Возможный дубликат [Фильтрация элементов в JavaScript A rray using jQuery] (http://stackoverflow.com/questions/2085012/filter-items-in-javascript-array-using-jquery) – Andreas

+0

Проблема в том, что у него есть несколько переменных: id, name, input' i dont know как перенести это! –

ответ

1

захватить каждый .input, фильтровать массив для соответствующего id с $.grep() и инициализировать tokenInput с отфильтрованным массивом

var array = [ 
    {id: 123, name: "Smith", input: "1"}, 
    {id: 156, name: "Kanye", input: "2"}, 
    {id: 134, name: "MacKenzie", input: "1"} 
]; 

$(".input").each(function(_, item) { 
    var filtered= $.grep(array, function(el) { 
         return el.input == item.id; 
        }); 

    $(this).tokenInput("http://shell.loopj.com/tokeninput/tvshows.php", { 
     prePopulate: filtered 
    }); 
}); 

fiddle

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