【问题标题】:Show/Hide different forms based on a option selected根据选择的选项显示/隐藏不同的表单
【发布时间】:2012-08-11 04:37:22
【问题描述】:

我想知道如何根据一个表单的选择来显示/隐藏不同的表单。

在下面的示例代码中,所有三个表单都自动设置为 display:none。如果从“淋浴”表单中选择相应的值,我只想显示其中一种“隐藏”表单。因此,如果从“淋浴”表格中选择了选项“表格1”,则在下面显示表格1;如果从“淋浴”表格中选择了选项“表格2”,则显示表格2;等等。

最好带有淡入/淡出动画或其他灯光动画。

这是一个示例...

<form id="form-shower">
<select>
<option value="" selected="selected"></option>
<option value="form_name1">Form 1</option>
<option value="form_name2">Form 2</option>
<option value="form_name3">Form 3</option>
</select>
</form>

<form name="form_name1" id="form_1" style="display:none">
<!---- THIS IS FORM 1---->
</form>

<form name="form_name2" id="form_2" style="display:none">
<!---- THIS IS FORM 2---->
</form>

<form name="form_name3" id="form_3" style="display:none">
<!---- THIS IS FORM 3---->
</form>

感谢您对此的任何帮助。

【问题讨论】:

    标签: javascript forms show-hide


    【解决方案1】:

    您可以使用 jQuery 来帮助您:

    <form id="form-shower">
    <select id="myselect">
    <option value="" selected="selected"></option>
    <option value="form_name1">Form 1</option>
    <option value="form_name2">Form 2</option>
    <option value="form_name3">Form 3</option>
    </select>
    </form>
    
    <form name="form_name1" id="form_name1" style="display:none">
    <!---- THIS IS FORM 1---->
    </form>
    
    <form name="form_name2" id="form_name2" style="display:none">
    <!---- THIS IS FORM 2---->
    </form>
    
    <form name="form_name3" id="form_name3" style="display:none">
    <!---- THIS IS FORM 3---->
    </form>
    <script>
    $("#myselect").on("change", function() {
        $("#" + $(this).val()).show().siblings().hide();
    })
    </script>
    

    我在您的选择中添加了一个 id 并更改了您的三个表单的 id 名称:)

    希望对你有帮助:)

    【讨论】:

    • 这段代码有一个问题,第一次选择某个选项时它什么也不做,但是当我选择另一个选项时,它会显示。
    【解决方案2】:
    <select>
        <option value="" selected="selected"></option>
        <option value="form_1">Form 1</option>
        <option value="form_2">Form 2</option>
        <option value="form_3">Form 3</option>
    </select>
    
    <form name="form_1" id="form_1" style="display:none">
    <input type="text" value="1">
    </form>
    
    <form name="form_2" id="form_2" style="display:none">
    <input type="text" value="2">
    </form>
    
    <form name="form_3" id="form_3" style="display:none">
    <input type="text" value="3">
    </form>​​​​​​​​​​​​​​​​​​​​​​​​​​​​​
    

    JS:

    $("select").on("change", function() {
        $("#" + $(this).val()).show().siblings().hide();
    });​
    

    样品在 http://jsfiddle.net/dfYAs/

    【讨论】:

      【解决方案3】:

      只需将其添加到 HTML 的末尾

          <script type="text/javascript">
          $('select').change(function(e){
                  $this = $(e.target);
                  var selected_form = $this.text().replace(' ','_name');
                  $('form').hide(2000, 'easeOutExpo');
                  $(selected_form).show(2000, 'easeOutExpo');
              });
          </script>
      

      【讨论】:

        【解决方案4】:

        如果您不想使用 jQuery,可以将其添加到 HTML 的顶部:

        <script>
        function changeForm(form) {
          for (var i=0; i<form.length; i++){
            var form_op = form.options[i].value;
            if (form_op == form.value) {
              document.getElementsByName(form_op)[0].style.display = "block";
            }
            else {
              document.getElementsByName(form_op)[0].style.display = "none";
            }
           }
          }
        </script>
        

        然后将onChange="changeForm(this)" 添加到您的主表单中。 // onChange 不区分大小写。

        【讨论】:

        • 嗨 RocketDonkey,这个解决方案有效,但是当我选择不同的选择时,表单不会消失,它们只是在我选择更多时添加到页面上......
        • 哈,我想这会很有用吧?看起来你得到了答案,但如果你需要一个没有 jQuery 的响应,我会调整我的。
        【解决方案5】:

        对于未来的读者,此设置将在没有外部库的情况下动态显示/隐藏这些表单:

        function changeOptions(selectEl) {
          let selectedValue = selectEl.options[selectEl.selectedIndex].value;
          let subForms = document.getElementsByClassName('className')
          for (let i = 0; i < subForms.length; i += 1) {
            if (selectedValue === subForms[i].name) {
              subForms[i].setAttribute('style', 'display:block')
            } else {
              subForms[i].setAttribute('style', 'display:none') 
            }
          }
        }
        

        然后是html:

        <select onchange="changeOptions(this)">
          <option value="" selected="selected"></option>
          <option value="form_1">Form 1</option>
          <option value="form_2">Form 2</option>
          <option value="form_3">Form 3</option>
        </select>
        
        <form class="className" name="form_1" id="form_1" style="display:none">
          <!---- THIS IS FORM 1---->
        </form>
        
        <form class="className" name="form_2" id="form_2" style="display:none">
          <!---- THIS IS FORM 2---->
        </form>
        
        <form class="className" name="form_3" id="form_3" style="display:none">
          <!---- THIS IS FORM 3---->
        </form>​​​​​​​​​​​​​​​​​​​​​​​​​​​​​
        

        【讨论】:

          【解决方案6】:

          $(document).ready(function() {
            $("select").change(function() {
              $(this).find("option:selected").each(function() {
                var optionValue = $(this).attr("value");
                if (optionValue) {
                  $(".box").not("." + optionValue).hide();
                  $("." + optionValue).show();
                } else {
                  $(".box").hide();
                }
              });
            }).change();
          });
          .box {
            color: #fff;
            padding: 20px;
            display: none;
            margin-top: 20px;
          }
          
          .red {
            background: #ff0000;
          }
          
          .green {
            background: #228B22;
          }
          
          .blue {
            background: #0000ff;
          }
          <!DOCTYPE html>
          <html lang="en">
          
          <head>
            <meta charset="utf-8">
            <title>jQuery Show Hide Elements Using Select Box</title>
          
            <script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
          </head>
          
          <body>
            <div>
              <select>
                <option>Choose Color</option>
                <option value="red">Red</option>
                <option value="green">Green</option>
                <option value="blue">Blue</option>
              </select>
            </div>
            <div id="check" class="red box">You have selected <strong>red option</strong> so i am here</div>
            <div id="check" class=" box">You have selected <strong>green option</strong> so i am here</div>
            <div id="check" class="box">You have selected <strong>blue option</strong> so i am here</div>
          </body>
          
          </html>

          【讨论】:

            【解决方案7】:

            做这个

            1. 创建函数 javascript 来帮助你完成这项工作,像这样
                function FFF(){
                    var opc = document.getElementById("form-shower").value;
                    switch(opc)
                    {
                        'form_name1':
                            document.getElementById('form_1').style.display = "block"; // or inline or none whatever
                            break;
            
                    }
                }
            
            1. 创建活动
            <select id='id_selec' onChange='javascript:FFF();'>
            

            【讨论】:

              【解决方案8】:

              $(document).ready(function() {
                $("select").change(function() {
                  $(this).find("option:selected").each(function() {
                    var optionValue = $(this).attr("value");
                    if (optionValue) {
                      $(".box").not("." + optionValue).hide();
                      $("." + optionValue).show();
                    } else {
                      $(".box").hide();
                    }
                  });
                }).change();
              });
              .box {
                color: #fff;
                padding: 20px;
                display: none;
                margin-top: 20px;
              }
              
              .red {
                background: #ff0000;
              }
              
              .green {
                background: #228B22;
              }
              
              .blue {
                background: #0000FF;
              }
              <!DOCTYPE html>
              <html lang="en">
              
              <head>
                <meta charset="utf-8">
                <title>jQuery Show Hide Elements Using Select Box</title>
              
                <script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
              </head>
              
              <body>
                <div>
                  <select>
                    <option>Choose Color</option>
                    <option value="red">Red</option>
                    <option value="green">Green</option>
                    <option value="blue">Blue</option>
                  </select>
                </div>
                <div id="check" class="red box">You have selected <strong>red option</strong> so i am here</div>
                <div id="check" class="green box">You have selected <strong>green option</strong> so i am here</div>
                <div id="check" class="blue box">You have selected <strong>blue option</strong> so i am here</div>
              </body>
              
              </html>

              【讨论】:

              • 这里只是一个批评者:您应该至少包含一些解释上述代码作用的文本。
              猜你喜欢
              • 2021-10-24
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2013-07-05
              • 1970-01-01
              • 2015-04-16
              • 1970-01-01
              • 2012-08-11
              相关资源
              最近更新 更多