JQuery автозаполнение фильтрации? - PullRequest
1 голос
/ 04 мая 2010

Я хочу отфильтровать результаты автозаполнения на основе выбранной опции в выбранном входе.

выборка данных JSON:

[{"ContactId": "8590051631", "ContactType": Компания, "Имя": "Test}, {" "ContactId": "8590049225", "ContactType": Person, "Name": "TestName} ]

вот моя разметка

<div>

<select class="type">
<option>Person</option>
<option>Company</option>
</select>

<input type="text" class="name" />

</div>


 $('.name').autocomplete("http://services.mydomain.com/rest/ia/findcontact", {
            dataType: 'jsonp',
            extraParams: {
                limit: '',
                timestamp: '' }
            },
            parse: function(data) {
                var items = data;
                var parsed = [];
                if (items != null || items != undefined) {
                    for (var i = 0; i < items.length; i++)
                        parsed[i] = { data: [items[i]], value: items[i].ContactId, result: [items[i].Name] };
                }
                return parsed;
            },
            formatMatch: function(d,i,t) {
            alert($(this).parent().find(".type").val());
               // do some filtering here?
            }

        });    

Кажется, мне нужно использовать опцию formatMatch для фильтрации результатов, но я не могу заставить это работать. Как отфильтровать результаты на основе выбранного значения параметра?

1 Ответ

0 голосов
/ 04 мая 2010

Я предполагаю, что в функции разбора вы можете получить текущий выбранный тип и игнорировать элемент, если это не выбранный тип?

parse: function(data) {
    var items = data;
    var parsed = [];
    if (items != null || items != undefined) {
        //get current type
        var selectedType = $(this).parent().find(".type").val();
        for (var i = 0; i < items.length; i++) {
            if (selectedType == items[i].ContactType){
                //just append to the array so you don't need to worry about missing indices.
                parsed.push({ data: [items[i]], value: items[i].ContactId, result: [items[i].Name] });
            }
        }
    }
    return parsed;
}
...