Как я могу получить значения из некоторых тегов 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>
Это буквально весь мой код из html: <div id = "for-input"> </div> Это просто контейнер для тегов выбора
Я не думаю, что вам понадобится больше кода для решения. Мне просто нужно получить данные из тегов выбора и добавить их в список. Свойство, которое будет содержать все идентификаторы, взятые из тегов выбора, будет ClientsID (тот, который я показал перед ^^^).



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


Что-то вроде этого?
<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: «Ссылка на объект не установлена на экземпляр объекта».
@Model.Reservations2.ClientsIDs это код C# (на стороне сервера), который уже был отрисован при загрузке страницы, вы не можете вносить в него изменения в функции js (на стороне клиента).
вам нужно отправить запрос на бэкэнд, чтобы изменить данные.
Мне нужно получить данные только один раз (когда пользователь нажимает кнопку), но дело в том, что пользователь может изменять значения в любое время, выбирая значение из тегов выбора. Я не хочу изменять значение каждый раз, когда пользователь выбирает значение, а только в конце, когда он отправляет форму. Я хочу альтернативу этому коду в JS: <select asp-for = "Reservations2.ClientsIDs"> </select>, но в то же время все эти значения должны быть помещены в список.
Итак, могу ли я предположить, что есть два варианта выбора, после того, как вы выберете какое-то значение из первого выбора и отправите их в бэкэнд, ClientsIDs удержит это значение, а затем вы хотите отобразить значения в идентификаторах клиентов в качестве параметров для второго выбора?
точно! Это правда!
mj1313 Я просто обновил его и вставил код из селектора и добавил весь код функции. Я пытаюсь сделать следующее: из тега select получить roomID и получить вместимость комнаты из этого идентификатора и создать теги выбора = к значению вместимости комнаты. И в теге выбора добавить всех клиентов отеля, чтобы вы могли выбрать, какой клиент будет в выбранном номере.
Боюсь, что ваша функция тоже не работает, я получаю в консоли Array (0) length: 0__proto__: Array (0), что бы я ни делал.
что делает этот цикл for (for (var i = 0; i < selectedValue2; i++))? Я не думаю, что вам нужно вставлять в него код.
Позвольте нам продолжить обсуждение в чате.
How can I now get the data from the selection tag and put it in the List?из какого выбора и в какой список? Может быть, вы можете предоставить некоторые html-коды, которые помогут воспроизвести эту проблему?