easyAutocomplete и поиск по вложенностям
Использую easyAutocomplete. Есть вот массив такой структуры:
array(
0 => array(
"TYPE" => 1,
"NAME" => "Иван",
"LIST" => array(
0 => array(
"CITY_NAME" => "Ростов",
"ADDRESS" => "Улица блабла",
),
1 => array(
"CITY_NAME" => "Ростов2",
"ADDRESS" => "Улица блабла2",
),
),
)
);
...
Суть в том, поиск работает, если я укажу, что искать в NAME.
это можно сделать либо так
getValue: "NAME",
либо сделать так
getValue: function(element) {
return element.NAME;
},
Оба этих варианта прекрасно ищут в NAME. Но как заставить easyAutocomplete eqnb искать в массив LIST по полям CITY_NAME и ADDRESS, если в NAME ничего не найдено?
Если кто знает буду признателен. Спасибо.
Ответы (1 шт):
Автор решения: qwabra
→ Ссылка
ВАЖНО
это только автокомплит, никакой связанности тут нет.
const DATA = Array.from({ length: 5, }, genData);
q: {
const set = new Set();
DATA.forEach(el => { set.add('' + el.TYPE); });
const data = Array.from(set);
$(".TYPE").easyAutocomplete({ data });
}
q: {
const set = new Set();
DATA.forEach(el => { set.add(el.NAME); });
const data = Array.from(set);
$(".NAME").easyAutocomplete({ data });
}
q: {
const set = new Set();
DATA.forEach(el => { el.LIST.forEach(q => { set.add(q.CITY_NAME); }); });
const data = Array.from(set);
$(".CITY_NAME").easyAutocomplete({ data });
}
q: {
const set = new Set();
DATA.forEach(el => { el.LIST.forEach(q => { set.add(q.ADDRESS); }); });
const data = Array.from(set);
$(".ADDRESS").easyAutocomplete({ data });
}
q: {
// и т.д. и т.п.
}
q: {
const set = new Set();
DATA.forEach(el => { set.add(el.NAME); });
DATA.forEach(el => { el.LIST.forEach(q => { set.add(q.ADDRESS); }); });
const data = Array.from(set);
$(".ALL").easyAutocomplete({ data });
}
function genData(q, i, arr) {
return {
"TYPE": i,
"NAME": 'Иван ' + i,
"LIST": [
{
"CITY_NAME": 'Ростов',
"ADDRESS": 'Улица блабла',
},
{
"CITY_NAME": 'Ростов2',
"ADDRESS": 'Улица блабла2',
}
]
};
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/easy-autocomplete/1.3.5/jquery.easy-autocomplete.min.js"></script>
TYPE<br/>
<input class="el TYPE" />
NAME<br/>
<input class="el NAME" />
CITY_NAME<br/>
<input class="el CITY_NAME" />
ADDRESS<br/>
<input class="el ADDRESS" />
всё вместе<br/>
<input class="el ALL" />