【问题标题】:How to add checkbox checked items in Dropdown/selectlist list如何在下拉/选择列表中添加复选框选中的项目
【发布时间】:2020-12-18 06:42:47
【问题描述】:

我正在 ASP.Net Core 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>

【问题讨论】:

    标签: javascript asp.net-core asp.net-core-mvc dom-events


    【解决方案1】:

    根据您的描述,我建议您可以尝试使用jquery添加选择选项。

    更多细节,您可以参考以下代码:

    <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>
    }
    

    结果:

    【讨论】:

    • 此代码工作正常,但仅显示复选框的“文本”(在下拉源代码中),您能否也添加“值”。 $("#Default_Currency").append('&lt;option value="' + 选定文本 + '"&gt;' + selectedtext + '&lt;/option&gt;');
    • 请告诉我您想在下拉列表选项列表中显示哪个值
    • 每个复选框都有一个值(与数据库中的货币ID映射),一个是货币名称。我想从选定的下拉列表中将货币的 ID 保存在数据库中。您的代码在两个地方都显示了货币的名称。
    猜你喜欢
    • 2015-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-29
    • 1970-01-01
    • 2013-06-21
    相关资源
    最近更新 更多