html - 3 个并排的框,通过下拉列表切换显示的框

标签 html css

http://jsfiddle.net/rnmk0zhz/5/

上面是我的 JSFiddle

我有3个下拉框,它们下面是隐藏的三个div。当选择“否”时,我希望显示其正下方的框。

我不希望它总是显示在左侧。如果中间没有选择,我希望中间下拉列表下的中间框隐藏,除非也选择其中之一。如果用户在两个框中选择“否”,那么我希望显示两个框。

我尝试过 float 它们,但是当一个隐藏一个显示时,填充会关闭。绝对位置不起作用,因为有很多行并且它们会重叠。

我希望我清楚我在这里要做什么。

<table style="padding-left: 56px; padding-top: 3px;">
    <tr>
        <td style="width: 421px;">
            <div style="float: left; margin-left: 0px; margin-top: 0px;" id="gray-select" class="gray">
                <select id="ddl1">
                    <option>yes</option>
                    <option>no</option>
                </select>
            </div>
        </td>
        <td style="width: 421px;">
            <div style="float: left; margin-left: 0px; margin-top: 0px;" id="gray-select" class="gray">
                <select id="ddl2">
                    <option>yes</option>
                    <option>no</option>
                </select>
            </div>
        </td>
        <td style="width: 421px;">

            <div style="float: left; margin-left: 0px; margin-top: 0px;" id="gray-select" class="gray">
                <select id="ddl3">
                    <option>yes</option>
                    <option>no</option>
                </select>
            </div>
        </td>
    </tr>
</table>
<div style="padding-left: 56px;" class="">
    <div class="box1" style="display:inline-block; height: 150px; width: 415px;">
        <span>box1</span>
        <br/>
        <br/>
        <textarea style="height: 149px; width: 328px;"></textarea>

    </div>
    <div class="box2" style="display: inline-block; height: 150px; width: 409px;">
        <span>box2</span>
        <br/>
        <br/>
        <textarea style="height: 149px; width: 328px;"></textarea>

    </div>
    <div class="box3" style="display:inline-block; height: 150px;  width: 409px;">
        <span>box3</span>
        <br/><br/>
        <textarea style="height: 149px;  width: 328px;"></textarea>

    </div>
</div>

最佳答案

我认为你可以使用 jquery 切换将其简化为:

$("[class^='box'").hide();

$("#ddl1").on("change", function() {
  $('.box1').toggle($(":selected", this).text() == "no");
});
$("#ddl2").on("change", function() {
  $('.box2').toggle($(":selected", this).text() == "no");
});
$("#ddl3").on("change", function() {
  $('.box3').toggle($(":selected", this).text() == "no");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table style="padding-left: 56px; padding-top: 3px;">
  <tr>
    <td style="width: 421px;">
      <div style="float: left; margin-left: 0px; margin-top: 0px;" id="gray-select" class="gray">
        <select id="ddl1">
          <option>yes</option>
          <option>no</option>
        </select>
      </div>
    </td>
    <td style="width: 421px;">
      <div style="float: left; margin-left: 0px; margin-top: 0px;" id="gray-select" class="gray">
        <select id="ddl2">
          <option>yes</option>
          <option>no</option>
        </select>
      </div>
    </td>
    <td style="width: 421px;">
      <div style="float: left; margin-left: 0px; margin-top: 0px;" id="gray-select" class="gray">
        <select id="ddl3">
          <option>yes</option>
          <option>no</option>
        </select>
      </div>
    </td>
  </tr>
</table>
<div style="padding-left: 56px;" class="">
  <div class="box1" style="display:inline-block; height: 150px; width: 415px;"> <span>box1</span>

    <br/>
    <br/>
    <textarea style="height: 149px; width: 328px;"></textarea>
  </div>
  <div class="box2" style="display: inline-block; height: 150px; width: 409px;"> <span>box2</span>

    <br/>
    <br/>
    <textarea style="height: 149px; width: 328px;"></textarea>
  </div>
  <div class="box3" style="display:inline-block; height: 150px;  width: 409px;"> <span>box3</span>

    <br/>
    <br/>
    <textarea style="height: 149px;  width: 328px;"></textarea>
  </div>
</div>

在您对框的位置发表评论后,我建议使用 visibility: hide 而不是 display: none:

$("[class^='box'").css("visibility", "hidden");

$("#ddl1").on("change", function() {
  $(":selected", this).text() == "no" ? $('.box1').css('visibility', 'visible') : $('.box1').css('visibility', 'hidden');

});
$("#ddl2").on("change", function() {
  $(":selected", this).text() == "no" ? $('.box2').css('visibility', 'visible') : $('.box2').css('visibility', 'hidden');
});
$("#ddl3").on("change", function() {
  $(":selected", this).text() == "no" ? $('.box3').css('visibility', 'visible') : $('.box3').css('visibility', 'hidden');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table style="padding-left: 56px; padding-top: 3px;">
  <tr>
    <td style="width: 421px;">
      <div style="float: left; margin-left: 0px; margin-top: 0px;" id="gray-select" class="gray">
        <select id="ddl1">
          <option>yes</option>
          <option>no</option>
        </select>
      </div>
    </td>
    <td style="width: 421px;">
      <div style="float: left; margin-left: 0px; margin-top: 0px;" id="gray-select" class="gray">
        <select id="ddl2">
          <option>yes</option>
          <option>no</option>
        </select>
      </div>
    </td>
    <td style="width: 421px;">
      <div style="float: left; margin-left: 0px; margin-top: 0px;" id="gray-select" class="gray">
        <select id="ddl3">
          <option>yes</option>
          <option>no</option>
        </select>
      </div>
    </td>
  </tr>
</table>
<div style="padding-left: 56px;" class="">
  <div class="box1" style="display:inline-block; height: 150px; width: 415px;"> <span>box1</span>

    <br/>
    <br/>
    <textarea style="height: 149px; width: 328px;"></textarea>
  </div>
  <div class="box2" style="display: inline-block; height: 150px; width: 409px;"> <span>box2</span>

    <br/>
    <br/>
    <textarea style="height: 149px; width: 328px;"></textarea>
  </div>
  <div class="box3" style="display:inline-block; height: 150px;  width: 409px;"> <span>box3</span>

    <br/>
    <br/>
    <textarea style="height: 149px;  width: 328px;"></textarea>
  </div>
</div>

关于html - 3 个并排的框,通过下拉列表切换显示的框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27561507/

相关文章:

html - float 图像旁边的 table

javascript - 如何向下推页面并在顶部添加一个div?

html - Chrome 中的渲染错误

javascript - 如何更改脚本中的 CHANGE ME 文本

html - 隐藏在 ul 上的溢出导致跳转

php - 无法使用我自己的主题在 wordpress 中链接样式表和图像

javascript - css id 选择器与元素 id 选择器通过 JavaScript 控制样式

jquery - :before gets hidden when setting overflow to scroll/hidden 里面的内容

css - 如何根据内容水平增长一个div?

javascript - 跨浏览器文本(模糊)阴影