Call up - тип ввода = "текст" в соответствии с выбранной опцией - PullRequest
1 голос
/ 29 апреля 2020

Я хотел бы показать от 1 до 3 полей ввода = "текст" в области HTML, в зависимости от выбранной опции. (Опции, которые нужно выбрать, загружены в файл JSON) Но я просто не могу это сделать ... ;-( Надеюсь, один из вас может мне помочь.

Это последняя часть Javascript:

        $(document).on('change', '#kunde', function () {
            var kunde_id = $(this).val();
            if (kunde_id != '')
             {
                load_json_data('grund', kunde_id);
            }

            else
             {
                $('#grund').html('<option value="">Bitte wähle</option>');
        }

Beispiel der Json Datei:

"id": "35", "name": "Tranportschaden", "parent_id": "4" },

1 Ответ

0 голосов
/ 29 апреля 2020

Эммануэль, я должен предположить, что load_json_data является асинхронным вызовом и возвращает promise (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise).

Вам придется подождать обещание resolve и только после read data его предоставляется в response. Мне придется принять здесь структуру данных, но давайте попробуем создать что-то с теми предположениями, которые, как я верю, помогут вам понять, и вы сможете исправить свою проблему.

Я также буду использовать синтаксис чтобы сделать это немного легче для чтения (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function), вот оно:

    $(document).on('change', '#kunde', async function () {
        var kunde_id = $(this).val();
        if (kunde_id != '')
         {
            var responseData = await load_json_data('grund', kunde_id);
            var count = responseData.value
            for (var i = 0; i < count; i++) {
              $('#grund').html('<option value="">Bitte wähle</option>');
             }
        }

        else
         {
            $('#grund').html('<option value="">Bitte wähle</option>');
    }

Вы заметите использование префикса async перед function (), а также ключевое слово await, если этот синтаксис вам незнаком, не беспокойтесь! Важно понять процедуру, в которой вы должны сделать звонок и ждать, и только после того, как что-то сделаете с ответом!

Используйте первый предоставленный мной URL, чтобы сделать это без синтаксического сахара в моем пример. Где вы будете делать что-то вроде:

load_json_data(...).then(...)

Три точки ... - это просто заполнитель, так как вам нужно выполнить их самостоятельно, просто следуйте документации;)

Примечания: responseData.value это просто пример, я предположил структуру данных, чтобы помочь вам понять, что вам нужно получить доступ к вашей конкретной собственности. Вы можете проверить тело ответа и найти нужное свойство, например, сделать console.log (responseData).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...