javascript - 在多个选择下拉列表中,选定的下拉列表值(选项)需要隐藏在剩余的下拉列表中

标签 javascript jquery html

我正在创建一个包含 3 个选择框的网络表单,其中包含多个问题。如果我从第一个选择下拉列表中选择第一个问题,该问题将不会出现在第二个选择下拉列表中。它将重复与第三个选择下拉列表相同的操作。

注意:主要目的是,如果用户从选择下拉列表中选择任何问题,该问题将不会出现在另一个选择下拉列表中。

演示代码:

.margin-top-10 { margin-top: 1.0em; }
.margin-top-20 { margin-top: 2.0em; }
.margin-top-30 { margin-top: 3.0em; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" crossorigin="anonymous">
<div class="row">
                        <div class="col-md-8 col-md-offset-2 col-xs-12">
                            <div class="panel panel-default">
                                <div class="panel-body">
                                    <div class="row margin-top-20">
                                        <div class="form-group">
                                            <label class="control-label col-sm-12 col-xs-12" for="">Question 1</label>
                                            <div class="col-sm-11 col-xs-12">
                                                <select class="form-control" id="sel1">
                                                    <option selected="">Choose your question</option>
                                                    <option>Select question 1</option>
                                                    <option>Select question 2</option>
                                                    <option>Select question 3</option>
                                                    <option>Select question 4</option>
                                                </select>
                                            </div>
                                            <div class="col-sm-11 col-xs-12 margin-top-10">
                                                <input type="text" class="form-control" placeholder="Type your answer">
                                            </div>
                                        </div>
                                    </div>
                                    <div class="row margin-top-20">
                                        <div class="form-group">
                                            <label class="control-label col-sm-12 col-xs-12" for="">Question 2</label>
                                            <div class="col-sm-11 col-xs-12">
                                                <select class="form-control" id="sel1">
                                                    <option selected="">Choose your question</option>
                                                    <option>Select question 1</option>
                                                    <option>Select question 2</option>
                                                    <option>Select question 3</option>
                                                    <option>Select question 4</option>
                                                </select>
                                            </div>
                                            <div class="col-sm-11 col-xs-12 margin-top-10">
                                                <input type="text" class="form-control" placeholder="Type your answer">
                                            </div>
                                        </div>
                                    </div>
                                    <div class="row margin-top-20">
                                        <div class="form-group">
                                            <label class="control-label col-sm-12 col-xs-12" for="">Question 3</label>
                                            <div class="col-sm-11 col-xs-12">
                                                <select class="form-control" id="sel1">
                                                    <option selected="">Choose your question</option>
                                                    <option>Select question 1</option>
                                                    <option>Select question 2</option>
                                                    <option>Select question 3</option>
                                                    <option>Select question 4</option>
                                                </select>
                                            </div>
                                            <div class="col-sm-11 col-xs-12 margin-top-10">
                                                <input type="text" class="form-control" placeholder="Type your answer">
                                            </div>
                                        </div>
                                    </div>
                
                                    <div class="row margin-top-20">
                                        <div class="col-xs-6 text-right">
                                            <a href="Create-Username-Password.html" class="btn btn-primary" role="button"> <span class="glyphicon glyphicon-arrow-left" aria-hidden="true"></span> Back</a>
                                        </div>
                                        <div class="col-xs-6"><a class="btn btn-primary" role="button" href="Registration-Complete.html" name="btnGlassContactInfo">Register <span class="glyphicon glyphicon-ok"></span></a></div>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>

最佳答案

您可能要做的第一件事是更改代码中的选择元素,以便每个元素都有唯一的 ID。他们现在都是 sel1 :)

然后您需要将 onchange 事件绑定(bind)到选择选项,这将删除正在选择的选项。这是一个例子:

$('select').on('change', function() {
  var elem = this;
  var option = this.value;
  $('.form-control option').each(function() {
    if ($(this).html() === option && $(elem).attr('id') !== $(this).parent().attr('id')) {
      $(this).remove();
    }
  });
})

您可能希望禁止用户使用相同的选择元素,或者存储已删除的选项,并在用户改变主意时将它们添加回来。

我在我的示例中禁用了它们,您可以在此处查看。 https://jsfiddle.net/martiensk/jwfeqrx0/

关于javascript - 在多个选择下拉列表中,选定的下拉列表值(选项)需要隐藏在剩余的下拉列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36468364/

相关文章:

javascript - 如何在 JavaScript 中迭代 map 数组列表?

javascript - 隐藏的 jQuery 可拖动包含溢出

html - 如何设置平行DIV?

html - 在 HTML/CSS 中实现下拉列表

php - 更新标记时 Google map 停止重新居中

javascript - 使用ajax作为json将多维数组发送到php并接收html文本以显示在div中

javascript - jQuery 缓动弹跳动画

javascript - jQuery 解构 |这是指什么?

javascript - 我在我的网站中添加了在线 JavaScript。如何更改由该 JavaScript 添加的网页中的 HTML?

javascript - 如何忽略 Angular 过滤器中的属性