Вызов Autocomplete по значению в input
С JS не шибко знаком, хуже новичка. Но...
Суть такова: у меня есть два input'а(input1 и input2). К input1 подвязан JQuery Autocomplete, данные подгружаются из JSON, всё работает и проблем нет. Код:
var data = [];
$.getJSON('путь_к_файлу', function(result) {
$.each(result.entries,function(index,val) {
data.push(val);
});
});
$(function(){
$("#id").autocomplete ({
source: data,
minLength: 3
})
.focus(function() {
$(this).autocomplete('search', $(this).val())
});
});
JSON имеет вид:
{
"entries": [
{"label":"text1"},
{"label":"text2"},
{"label":"text3"}
]
}
Как сделать так, чтобы в input2 подгружался другой JSON с Autocomplet'ом, если значение в первом, например, text2? Либо, как можно разумно модифицировать код и JSON с закосом на будущее, если вдруг понадобится проделывать такую же фигню, когда в input1 будет выбран text1 или text2? |
Goopy,
должно быть, как-то так ...
var data = [];
$.getJSON('путь_к_файлу', function(result) {
$.each(result.entries, function(index, val) {
data.push(val);
});
});
$(function() {
$("#id").autocomplete({
source: data,
minLength: 3,
select: function(event, ui) {
$("input2").autocomplete({
source: function(request, response) {
$.ajax({
url: "путь_к_файлу",
dataType: "jsonp",
data: {
term: ui.item.value
},
success: function(data) {
response(data);
}
});
},
minLength: 3
});
}
})
.focus(function() {
$(this).autocomplete('search', $(this).val())
});
});
|
рони,
Все равно остается риск, что данные в getJSON придут позже, чем сработает DOMContentLoaded и они понадобятся а source: data |
рони, благодарю за наводку)
voraa, да, не совсем нормально))) данные не приходят... буду думать, еще надо условие добавить, чтобы в input2 подгружался JSON, только если значение в Input1 = text3. |
Цитата:
function getJSON() {
return new Promise(res => {
const data = [];
$.getJSON('путь_к_файлу', function(result) {
$.each(result.entries, function(index, val) {
data.push(val);
});
});
res(data);
})
}
const prom = getJson();
$(function() {
prom.then(data => {
$("#id").autocomplete({
source: data,
minLength: 3,
select: function(event, ui) {
$("input2").autocomplete({
source: function(request, response) {
$.ajax({
url: "путь_к_файлу",
dataType: "jsonp",
data: {
term: ui.item.value
},
success: function(data) {
response(data);
}
});
},
minLength: 3
});
}
})
.focus(function() {
$(this).autocomplete('search', $(this).val())
});
})
});
|
второй Json не подгружается, в консоли, вместо него грузится первый Json
|
Ну так пути же разные должны быть у первого и второго. Я же не знаю ваши пути.
|
Я просто взял код рони, что бы показать как это сделать с промисом.
Там сделано Цитата:
|
Цитата:
|
Цитата:
|
| Часовой пояс GMT +3, время: 02:44. |