Автозаполнение jquery не всегда работает

У меня проблема с автозаполнением 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>

Надеюсь, что кто-нибудь поможет мне решить эту проблему.

Пожалуйста, порекомендуйте,

Кевин

похоже, что jquery не распознается при повторной загрузке окна. Вы пытались отладить это и посмотреть, что происходит?

Nilesh 05.06.2018 16:34

@Nilesh Я пробовал отладку, но не вижу ничего странного, где jquery не распознается при открытии модального окна во второй раз. То, что я обнаружил, происходит только после сохранения первой дочерней записи. если я открываю модель, заполняю все поля, но затем нажимаю «Отмена» (чтобы отменить любые изменения и закрыть модальное окно) и повторно открыть форму, автозаполнение по-прежнему отлично работает. После сохранения изменений и повторного открытия модального окна я снова получаю ту же ошибку.

Kevin 05.06.2018 19:01
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
2
44
1

Ответы 1

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

Спасибо за вашу помощь!

Другие вопросы по теме