如何在 Dropdown/selectlist 列表中添加复选框选中的项目
How to add checkbox checked items in Dropdown/selectlist list
我正在 ASP.Net 核心 MVC 中创建客户资料页面。在客户资料中,我给出了可用货币列表(在复选框中),我们可以从中选择该客户可以与我们交易的货币。
我想从选中的复选框中设置一种默认货币,为此我创建了下拉列表,我想用所有选中的货币填充下拉列表,这样我将从这个下拉列表中选择一种默认货币。
有人可以提供 Javascript 根据选中的复选框填充下拉列表吗?
@for (int j = 0; j < Model.Currency.Count(); j++)
{
<tr>
<td>
@Html.CheckBoxFor(m => m.Currency[j].Checked)
</td>
<td>
@Html.DisplayFor(m => m.Currency[j].Name)
@Html.HiddenFor(m => m.Currency[j].Id)
@Html.HiddenFor(m => m.Currency[j].Name)
</td>
</tr>
}
</table>
<div class="col-5">
<select id="Default_Currency"
asp-for="DefaultCurrency"
asp-items=""
class="form-control">
</select>
</div>
根据您的描述,我建议您可以尝试使用 jquery 添加 select 选项。
更多详情,您可以参考以下代码:
<table>
@for (int j = 0; j < Model.Currency.Count(); j++)
{
<tr>
<td>
@Html.CheckBoxFor(m => m.Currency[j].Checked, new { @class = "ckbox" })
</td>
<td>
@Html.DisplayFor(m => m.Currency[j].Name)
@Html.HiddenFor(m => m.Currency[j].Id)
@Html.HiddenFor(m => m.Currency[j].Name)
</td>
</tr>
}
</table>
<div class="col-5">
<select id="Default_Currency"
class="form-control">
</select>
</div>
@section scripts{
<script type="text/javascript">
$(
function () {
$(".ckbox").each(function () {
var selectedtext = ($(this).parent().next().text());
if ($(this).is(':checked')) {
$("#Default_Currency").append('<option value="' + selectedtext + '">' + selectedtext + '</option>');
} else {
$('option[value*="' + selectedtext + '"]').remove();
}
});
});
$(".ckbox").change(function (e) {
var selectedtext = ($(this).parent().next().text());
if ($(this).is(':checked')) {
$("#Default_Currency").append('<option value="' + selectedtext + '">' + selectedtext + '</option>');
} else {
$('option[value*="' + selectedtext + '"]').remove();
}
});
</script>
}
结果:
我正在 ASP.Net 核心 MVC 中创建客户资料页面。在客户资料中,我给出了可用货币列表(在复选框中),我们可以从中选择该客户可以与我们交易的货币。
我想从选中的复选框中设置一种默认货币,为此我创建了下拉列表,我想用所有选中的货币填充下拉列表,这样我将从这个下拉列表中选择一种默认货币。
有人可以提供 Javascript 根据选中的复选框填充下拉列表吗?
@for (int j = 0; j < Model.Currency.Count(); j++)
{
<tr>
<td>
@Html.CheckBoxFor(m => m.Currency[j].Checked)
</td>
<td>
@Html.DisplayFor(m => m.Currency[j].Name)
@Html.HiddenFor(m => m.Currency[j].Id)
@Html.HiddenFor(m => m.Currency[j].Name)
</td>
</tr>
}
</table>
<div class="col-5">
<select id="Default_Currency"
asp-for="DefaultCurrency"
asp-items=""
class="form-control">
</select>
</div>
根据您的描述,我建议您可以尝试使用 jquery 添加 select 选项。
更多详情,您可以参考以下代码:
<table>
@for (int j = 0; j < Model.Currency.Count(); j++)
{
<tr>
<td>
@Html.CheckBoxFor(m => m.Currency[j].Checked, new { @class = "ckbox" })
</td>
<td>
@Html.DisplayFor(m => m.Currency[j].Name)
@Html.HiddenFor(m => m.Currency[j].Id)
@Html.HiddenFor(m => m.Currency[j].Name)
</td>
</tr>
}
</table>
<div class="col-5">
<select id="Default_Currency"
class="form-control">
</select>
</div>
@section scripts{
<script type="text/javascript">
$(
function () {
$(".ckbox").each(function () {
var selectedtext = ($(this).parent().next().text());
if ($(this).is(':checked')) {
$("#Default_Currency").append('<option value="' + selectedtext + '">' + selectedtext + '</option>');
} else {
$('option[value*="' + selectedtext + '"]').remove();
}
});
});
$(".ckbox").change(function (e) {
var selectedtext = ($(this).parent().next().text());
if ($(this).is(':checked')) {
$("#Default_Currency").append('<option value="' + selectedtext + '">' + selectedtext + '</option>');
} else {
$('option[value*="' + selectedtext + '"]').remove();
}
});
</script>
}
结果: