Javascript asp用于选择标记[在JS中]中的值列表
如何从javascript中创建的一些select标记中获取值? 问题是标签的数量不是固定的。 我尝试对使用select.tagName而不是asp,但无法将其映射到列表属性 这个函数的作用很简单,就是为酒店房间的客户创建选择标签。每个选择标记中都有所有客户端名称作为选项 这是我的财产:Javascript asp用于选择标记[在JS中]中的值列表,javascript,asp.net-mvc,asp.net-core,Javascript,Asp.net Mvc,Asp.net Core,如何从javascript中创建的一些select标记中获取值? 问题是标签的数量不是固定的。 我尝试对使用select.tagName而不是asp,但无法将其映射到列表属性 这个函数的作用很简单,就是为酒店房间的客户创建选择标签。每个选择标记中都有所有客户端名称作为选项 这是我的财产: public List<int> ClientsIDs { get; set; } 以下是我创建的选择标签: <script type="text/javascript"
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.log(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>
}
}
}
selectedValue2是从另一个select标记中获取的值。
我现在如何从选择标记中获取数据并将其放入列表中?
更新:
添加了从主选择器创建其他选择器的代码:
<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>
像这样的
<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.log(clientIds)
})
</script>
}
输出:
我现在如何从选择标记中获取数据并将其放入列表中?从哪个选项和到哪个列表?也许你可以提供一些html代码来帮助重现这个问题?这是我从html中获得的全部代码:这只是选择标记的容器。我认为解决方案不需要更多的代码。我只需要从选择标签中获取数据并将其添加到列表中。包含从选择标记获取的所有ID的属性将是ClientsIDs,即我在^^^^之前显示的属性。在我的示例中尝试此操作时:$for input select option.eachfunction{@Model.Reservations2.ClientsIDs.push$this.val;}我收到以下错误:System.NullReferenceException:“对象引用未设置为对象的实例”。@Model.Reservations2.ClientsIDs这是c代码服务端,在加载页面时已呈现该端,您不能在js functionclient端对其进行更改。您需要向后端发送更改数据的请求。当用户单击按钮时,我只需要获取一次数据,但问题是用户可以通过从选择标记中选择一个值来随时更改值。我不希望每次用户选择一个值时都更改该值,但仅在最后提交表单时更改。我想在JS中使用这段代码的另一种方法:但同时将所有这些值放在一个列表中。因此,我可以假设有两个选择,在您从第一个选择中选择一些值并将其提交到后端后,ClientSid会保留这些值,然后要将ClientsIDs中的值作为选项呈现给第二个选择?