我想根据选择输入中的所选选项过滤自动完成结果。
示例json数据:
[{“ContactId”:“8590051631”,“ContactType”:公司,“名称”:“测试”,{“”ContactId“:”8590049225“,”ContactType“:人,”姓名“:”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选项来过滤结果,但我不能让它工作。如何根据所选的选项值过滤结果?
答案 0 :(得分:0)
我猜测在解析函数中,您可以获取当前选择的类型,如果不是所选类型,则忽略该项目?
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;
}