【问题标题】:show html element if option is selected in multiple dropdown lists如果在多个下拉列表中选择了选项,则显示 html 元素
【发布时间】:2021-07-22 20:34:35
【问题描述】:

我想在 bootstrap 4 模块中创建 2 个下拉列表,如果选择了选项 3,则会出现带有输入的表单。我设法找到了一个显示隐藏元素的代码,但我只在第一个下拉列表中工作,而且我有 2 个。

function showDiv(divId, element) {
  document.getElementById(divId).style.display = element.value == 3 ? 'block' : 'none';
}
#hiddenform {
  display: none;
}

#hiddenform2 {
  display: none;
}
<link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css">
<script type="text/javascript" src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>

<div class="modal-content">
  <div class="modal-header">
    <div class="modal-title gap-title" id="exampleModalCenterTitle">Title</div>
    <button type="button" class="close" data-dismiss="modal" aria-label="Close">
      <span aria-hidden="true">&times;</span>
    </button>
  </div>
  <div class="modal-body">
    <form>
      <div class="form-inline align-items-center">
        <label class="mr-sm-2 col-form-label-lg">Option 1</label>
        <select class="custom-select" onchange="showDiv('hiddenform', this)">
          <option value="" selected disabled>Choose option</option>
          <option value="1">Previous version</option>
          <option value="2">Current version</option>
          <option value="3">From Excel</option>
        </select>
        <form method="POST" action="" enctype="multipart/form-data" class="collapse row justify-content-center mx-auto">
          <div class="input-group p-2">
            <div class="custom-file" id="hiddenform">
              <input type="file" class="custom-file-input pointer" name="file">
              <label class="custom-file-label pointer" for="customFile">Choose file</label>
            </div>
          </div>
        </form>

        <label class="mr-sm-2 col-form-label-lg">Option 2</label>
        <select class="custom-select" onchange="showDiv('hiddenform2', this)">
          <option value="" selected disabled>Choose option</option>
          <option value="1">Previous version</option>
          <option value="2">Current version</option>
          <option value="3">From Excel</option>
        </select>

        <form method="POST" action="" enctype="multipart/form-data" class="collapse row justify-content-center mx-auto">
          <div class="input-group p-2" id="hiddenform2">
            <div class="custom-file">
              <input type="file" class="custom-file-input pointer" name="file">
              <label class="custom-file-label pointer" for="customFile">Choose file</label>
            </div>
          </div>
        </form>
      </div>
    </form>
  </div>
  <div class="modal-footer">
    <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
    <a href="{{url_for('gap_analysis_output')}}">
      <button type="button" class="btn btn-primary">Generate file</button>
    </a>
  </div>
</div>

https://jsfiddle.net/0usLh1jw/6/

【问题讨论】:

  • 除此问题外,请注意您的 HTML 无效,因为您有一个 form 元素嵌套在另一个 form 中。内部的需要删除。此外,您正在添加 jQuery after Bootstrap。它需要首先被引用,因为 Bootstrap 依赖它。
  • 非常感谢您的反馈。实际上删除不必要的表单元素有所帮助,现在一切都正确显示了。

标签: javascript html jquery bootstrap-4 bootstrap-modal


【解决方案1】:

除了 Rory 在评论中提到的,&lt;form&gt; 元素由于 collapse CSS 类而被隐藏。您需要删除这些或将id 属性id="hiddenform"id="hiddenform2" 移动到&lt;form&gt; 元素本身,以便JavaScrit 显示它们:https://jsfiddle.net/6gzbwopv/

【讨论】:

  • thnaks 很多,当我阅读 Rory 的反馈时,我正在研究这个表单元素并且它有所帮助。您在代码中实施的更改也很好,因此我认为您的回答已被接受。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-01-30
  • 2017-05-11
  • 1970-01-01
  • 1970-01-01
  • 2017-12-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多