У меня проблема с автозаполнением jquery в модальном окне. Я попытаюсь объяснить ситуацию так как можно яснее. Если у вас есть какие-либо вопросы, пожалуйста, дайте мне знать.
У меня есть экран со всеми полями, это основная запись. У меня также есть коллекция субзаписей. Я хочу, чтобы пользователь добавлял информацию в подзаписи, используя модальный диалог для дочерней записи. Одним из полей в подзаписи является поле «Валюта». Это поле должно быть автозаполнением. Проблема довольно простая, но через 2 дня я все еще не знаю, как ее решить. В первый раз, когда пользователь нажимает кнопку добавления, модальное окно открывается идеально. Автозаполнение также работает как шарм. Но когда пользователь сохраняет первого потомка и хочет добавить второго, нажав кнопку добавления, модальное окно открывается снова. Но затем я получаю сообщение об ошибке "Uncaught TypeError: $ (...). Автозаполнение не является функцией" и не могу понять, почему в первый раз все работает отлично, но почему во второй раз появляется эта ошибка.
Код:
Для открытия модального окна:
<a href = "#theModal" class = "nav-link btn btn-info float-right" data-
remote = "/Specification/_AddSpecification" data-toggle = "modal" data-
backdrop = "static" data-target = "#theModal"> Nieuwe specificatie</a>
Для автозаполнения (я использую для этого класс)
<script>
$(document).ready(function () {
$(document).on('focus',
'.CurrencySelect',
function () {
$(this).autocomplete({
source: function (request, response) {
$.ajax({
url: "/Currency/searchCurrencies",
type: "POST",
dataType: "json",
data: { searchValue: request.term },
success: function (data) {
//alert(JSON.stringify(data));
response($.map(data,
function (item) {
return { label: item.currency.Name, value: item.currency.Id };
}));
}
});
},
select: function (event, ui) {
//alert(this.id);
var idField = this.id.replace('String', '');
//alert(idField);
$("input[name = " + idField + "]").val(ui.item.value);
$("input[name = " + this.id + "]").val(ui.item.label);
// retrieve the exchange rate from the selected currency for the specified declarationDate.
$.ajax({
url: "/Currency/getExchangeRate",
type: "POST",
dataType: "json",
data: {
currencyId: ui.item.value,
date: $("#date").val()
},
success: function (data) {
//alert(JSON.stringify(data));
// Check if status = success
if (data.status === "success") {
// check if statusmessage = null
if (data.statusmessage == null) {
// Disablen van het veld ExchangeRate.
$("#ExchangeRateReadOnly").attr("disabled", "disabled");
// Vullen van het veld ExchangeRate via een variabele.
var er = data.Value;
$("#ExchangeRateReadOnly").val(er.toString().replace(/\./g, ','));
$("#ExchangeRate").val(er.toString().replace(/\./g, ','));
convertCurrencyToEuro();
} else if (data.statusmessage === "Exchangerate unknown") {
alert(
"Voor de geselecteerde valuta is geen geldige koers bekend. U dient deze zelf op te voeren.");
$('#ExchangeRateReadOnly').prop("disabled", false);
convertCurrencyToEuro();
} else if (data.statusmessage === "No exchangerate needed") {
alert("Er is geen koers nodig voor de geselecteerde valuta.");
$("#ExchangeRateReadOnly").attr("disabled", "disabled");
convertCurrencyToEuro();
} else if (data.statusmessage === "Invalid currency code") {
alert("Er is geen geldige valuta geselecteerd.");
convertCurrencyToEuro();
}
}
}
});
return false;
}
});
});
});
</script>
Надеюсь, что кто-нибудь поможет мне решить эту проблему.
Пожалуйста, порекомендуйте,
Кевин
@Nilesh Я пробовал отладку, но не вижу ничего странного, где jquery не распознается при открытии модального окна во второй раз. То, что я обнаружил, происходит только после сохранения первой дочерней записи. если я открываю модель, заполняю все поля, но затем нажимаю «Отмена» (чтобы отменить любые изменения и закрыть модальное окно) и повторно открыть форму, автозаполнение по-прежнему отлично работает. После сохранения изменений и повторного открытия модального окна я снова получаю ту же ошибку.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Я просто решил проблему. Как глупо, jquery загружался дважды. Один раз на странице _layout и один раз на странице для самих родительских дочерних записей. После удаления его со страницы parent-child все, кажется, теперь работает как шарм.
Спасибо за вашу помощь!
похоже, что jquery не распознается при повторной загрузке окна. Вы пытались отладить это и посмотреть, что происходит?