Asp-for список значений из тега select [в JS]

Как я могу получить значения из некоторых тегов select, созданных в javascript? Дело в том, что количество тегов не фиксировано. Я пробовал использовать select.tagName вместо asp-for, но не могу сопоставить его со свойством списка.

Эта функция просто создает теги выбора для клиентов гостиничного номера. Каждый тег выбора имеет в качестве опции все имена клиентов.

Вот моя собственность:

public List<int> ClientsIDs { get; set; }

Вот созданные мной теги выбора:

<script type = "text/javascript" charset = "UTF-8">
window.onload = changeFunc;
function changeFunc() {
    var elements = document.getElementsByClassName('selector2');
    while (elements.length > 0) {
        elements[0].parentNode.removeChild(elements[0]);
    }
    var selector = document.getElementById('selector');
    var selectedValue = selector.value;
    console.info(selectedValue);
    @foreach (var item in Model.Rooms)
    {
            <text>
            if (@item.RoomID == selectedValue)
            {
                var selectedValue2 = @item.Capacity;
            }
            </text>
    }
    var inputContainer = document.getElementById('for-input');
    for (var i = 0; i < selectedValue2; i++)
    {
        var selector2 = inputContainer.appendChild(document.createElement("select"));
        selector2.className = "selector2";
        var option1 = document.createElement("option");
        option1.value = "null";
        option1.text = "Избери клиент";
        option1.defaultSelected = true;
        selector2.appendChild(option1);
        selector2.tagName = "ClientsIDs";
        @foreach (var item in Model.Clients)
        {
            <text>
                var optionz = document.createElement("option");
                optionz.tagName = "ClientsIDs";
                optionz.value = @item.ID;
                optionz.text = he.decode("@item.Name");
                selector2.appendChild(optionz);
            </text>
        }
    }
}
The selectedValue2 is a value which is taken from another select tag. How can I now get the data from the selection tag and put it in the List?

ОБНОВЛЕНО: Добавлен код из основного селектора (из которого создаются другие селекторы):

    <select asp-for = "Reservations2.RoomId" onchange = "changeFunc();" class = "form-select" id = "selector">
    @foreach (var item in Model.Rooms)
    {
        <option value = "@item.RoomID">Стая @item.RoomID с капацитет @item.Capacity</option>
    }
</select>
How can I now get the data from the selection tag and put it in the List? из какого выбора и в какой список? Может быть, вы можете предоставить некоторые html-коды, которые помогут воспроизвести эту проблему?
mj1313 06.04.2021 06:29

Это буквально весь мой код из html: <div id = "for-input"> </div> Это просто контейнер для тегов выбора

Kraeror 06.04.2021 11:46

Я не думаю, что вам понадобится больше кода для решения. Мне просто нужно получить данные из тегов выбора и добавить их в список. Свойство, которое будет содержать все идентификаторы, взятые из тегов выбора, будет ClientsID (тот, который я показал перед ^^^).

Kraeror 06.04.2021 11:49
Поведение ключевого слова "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
3
44
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Что-то вроде этого?

<div id = "for-input">
    <select>
        <option value = "0">--select--</option>
        <option value = "1">A</option>
        <option value = "2">B</option>
        <option value = "3">C</option>
        <option value = "4">D</option>
    </select>
</div>

@section scripts{
    <script>
        $(function () {
            var clientIds = [];
            $("#for-input select option").each(function () {
                clientIds.push($(this).val());
            })
            console.info(clientIds)
        })
    </script>
}

Выход:

Когда я пробую это в моем случае: $ ("# вариант выбора для ввода"). Each (function () {@ Model.Reservations2.ClientsIDs. Push ($ (this) .val ());}) Я получение этой ошибки: System.NullReferenceException: «Ссылка на объект не установлена ​​на экземпляр объекта».

Kraeror 06.04.2021 12:30
@Model.Reservations2.ClientsIDs это код C# (на стороне сервера), который уже был отрисован при загрузке страницы, вы не можете вносить в него изменения в функции js (на стороне клиента).
mj1313 06.04.2021 12:34

вам нужно отправить запрос на бэкэнд, чтобы изменить данные.

mj1313 06.04.2021 12:35

Мне нужно получить данные только один раз (когда пользователь нажимает кнопку), но дело в том, что пользователь может изменять значения в любое время, выбирая значение из тегов выбора. Я не хочу изменять значение каждый раз, когда пользователь выбирает значение, а только в конце, когда он отправляет форму. Я хочу альтернативу этому коду в JS: <select asp-for = "Reservations2.ClientsIDs"> </select>, но в то же время все эти значения должны быть помещены в список.

Kraeror 06.04.2021 12:41

Итак, могу ли я предположить, что есть два варианта выбора, после того, как вы выберете какое-то значение из первого выбора и отправите их в бэкэнд, ClientsIDs удержит это значение, а затем вы хотите отобразить значения в идентификаторах клиентов в качестве параметров для второго выбора?

mj1313 06.04.2021 12:51

точно! Это правда!

Kraeror 06.04.2021 20:31

mj1313 Я просто обновил его и вставил код из селектора и добавил весь код функции. Я пытаюсь сделать следующее: из тега select получить roomID и получить вместимость комнаты из этого идентификатора и создать теги выбора = к значению вместимости комнаты. И в теге выбора добавить всех клиентов отеля, чтобы вы могли выбрать, какой клиент будет в выбранном номере.

Kraeror 06.04.2021 21:17

Боюсь, что ваша функция тоже не работает, я получаю в консоли Array (0) length: 0__proto__: Array (0), что бы я ни делал.

Kraeror 06.04.2021 21:47

что делает этот цикл for (for (var i = 0; i < selectedValue2; i++))? Я не думаю, что вам нужно вставлять в него код.

mj1313 07.04.2021 06:09

Позвольте нам продолжить обсуждение в чате.

Kraeror 07.04.2021 09:37

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