【问题标题】:Don't select from second dropdownlist from already selected item in the first dropdownlist不要从第一个下拉列表中已选择的项目中选择第二个下拉列表
【发布时间】:2017-12-16 06:52:12
【问题描述】:

我有两个包含相同问题的下拉列表。 我必须从第一个下拉列表中“不显示”所选项目,反之亦然。如果我从第 1 个下拉菜单中选择了第 1 个问题,那么它在第 2 个下拉列表中将不可用。

下面是我的代码:

<div class="form-group">
    @Html.DropDownListFor(m => m.ChallengeQuestion1, (SelectList)ViewBag.ChallengeQuestions, "-- Challenge Question 1 --", new { @class = "form-control" })
    @Html.ValidationMessageFor(m => m.ChallengeQuestion1)
</div>

<div class="form-group">
    @Html.TextBoxFor(m => m.ChallengeAnswer1, new { @class = "form-control", placeholder = "Answer" })
    @Html.ValidationMessageFor(m => m.ChallengeAnswer1)
</div>

<div class="form-group">
    @Html.DropDownListFor(m => m.ChallengeQuestion2, (SelectList)ViewBag.ChallengeQuestions, "-- Challenge Question 2 --", new { @class = "form-control" })
    @Html.ValidationMessageFor(m => m.ChallengeQuestion2)
</div>

<div class="form-group">
    @Html.TextBoxFor(m => m.ChallengeAnswer2, new { @class = "form-control", placeholder = "Answer" })
    @Html.ValidationMessageFor(m => m.ChallengeAnswer2)

【问题讨论】:

  • 这是我的一组问题 public IEnumerable GetChallengeQuestions() { var questions = new List { new DropDownListItem { Name = "question1?" }, new DropDownListItem { Name = "question2?" },返回问题; }
  • 您需要使用javascript隐藏或禁用另一个&lt;select&gt;元素中的选项

标签: c# asp.net-mvc html model-view-controller asp.net-mvc-5


【解决方案1】:

选择第一个下拉选项时,您必须删除第二个下拉选项。 您可以通过编写第一个下拉列表的 javascript 更改事件并从第二个下拉列表中删除第一个选择的选项来做到这一点。

$("select[name='ChallengeQuestion1']").change(function() {
    var selectedItem = $(this).val();        
    $("select[name='ChallengeQuestion2'] > option[value=" +selectedItem +"]").remove();  
});

【讨论】:

    【解决方案2】:

    正如斯蒂芬已经告诉你必须在客户端这样做。

    var $dropdown1 = $("select[name='dropdown1']");
    var $dropdown2 = $("select[name='dropdown2']");
    
    $dropdown1.change(function() {
        var selectedItem = $(this).val();        
        $("select[name='dropdown2'] > option[value=" +selectedItem +"]").attr('disabled', true)
        .siblings().removeAttr('disabled'); 
    });
    

    【讨论】:

    • 您不想删除该选项 - 只需隐藏或禁用它(用户可能会改变主意并选择另一个选项)并且代码需要显示或启用任何隐藏或禁用的选项。跨度>
    • 感谢@neel 的回答,禁用或隐藏都可以。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-17
    • 1970-01-01
    • 1970-01-01
    • 2012-01-04
    • 2015-10-05
    • 1970-01-01
    相关资源
    最近更新 更多