У меня есть некоторый javascript, который принимает пользовательский ввод, запрашивает конечную точку с этим вводом через ajax и возвращает поле из результатов в виде добавления <option>
к datalist
. Это работает правильно, и я вижу именно то, что мне нужно в списке опций.
Следующая часть, над которой я работал, заключается в том, что, когда я щелкаю опцию, я хочу, чтобы другие связанные с ней поля в объекте заполняли значение для ввода формы. У меня все это структурировано, но когда я нажимаю на элемент, он говорит result is not defined
в этой строке:
$("#groupName").val(result[$(foundOption).attr('srindex')]._source.name);
Таким образом, мои параметры верны, и когда я щелкаю опцию, она отражает выбранную опцию в консоли. Проблема в том, что я, по-видимому, неправильно передаю результат в мой else if
.
Иерархия моего _источника верна, но я просто не знаю, как мне нужно изменить аргумент .val для получения правильного значения.
Есть идеи?
$('#productInput').on('input', function () {
let _this = $(this);
let foundOption;
let optSelector = `option[value='${_this.val()}']`;
if (_this.val() === '') {
return;
} else if ((foundOption = $('#returnedProducts').find(optSelector)).length) {
console.log(optSelector); //this prints the option[value] of the clicked value as it should
$("#groupName").val(result[$(foundOption).attr('srindex')]._source.name);
$("#groupNum").val(result[$(foundOption).attr('srindex')]._source.code);
} else {
const searchResult = $(this).val();
$.ajax({ url: '/account/autocomplete',
data: {
search_result:searchResult
},
"_token": "{{ csrf_token() }}",
type: "POST",
success: function (response) {
console.log(response);
console.log(searchResult);
$("#returnedProducts").empty();
let result = response.hits.hits;
console.log(result);
for(let i = 0; i < result.length; i++) {
$("#returnedProducts").append("<option srindex=" + [i] + " value=" + result[i]._source.name + ">" + result[i]._source.name + "</option>");
}
}
});
}
});
Обновление:
мой объект выглядит так
hits
hits
_source
name
code
скрипка http://jsfiddle.net/qhbt569o/8/