【问题标题】:Hide/show textboxes with jQuery based on radio button selection基于单选按钮选择使用 jQuery 隐藏/显示文本框
【发布时间】:2014-05-12 12:22:00
【问题描述】:

当在我的表单上单击某个单选按钮时,我需要显示某些文本框,否则文本框应该保持隐藏状态。这是我所拥有的一个示例:

HTML:

Radio buttons:
<p>Show textboxes<input type="radio" name="radio1" value="Show" onClick="getResults()">Do nothing<input type="radio" name="radio1" value="Nothing"></p>
Textboxes:
<div class="text"><p>Textbox #1 <input type="text" name="text1" id="text1" maxlength="30"></p></div>
<div class="text"><p>Textbox #2 <input type="text" name="text2" id="text2" maxlength="30"></p></div>

jQuery:

$(document).ready(function() {
  $(".text").hide()
    function getResults() {
        $(".text").show()
    };
});

Fiddle

当我取出 .show() 代码时,文本框保持隐藏状态。当带有 onClick 事件的单选按钮被选中时,我需要显示它们。任何帮助将不胜感激。

【问题讨论】:

    标签: javascript jquery html onclick radio-button


    【解决方案1】:

    JSFIDDLE

    Javascript

    $(document).ready(function () {
        $(".text").hide();
        $("#r1").click(function () {
            $(".text").show();
        });
        $("#r2").click(function () {
            $(".text").hide();
        });
    });
    

    HTML

    <p>Show textboxes
        <input type="radio" name="radio1" id="r1" value="Show">Do nothing
        <input type="radio" name="radio1" id="r2" value="Nothing">
    </p>Wonderful textboxes:
    <div class="text">
        <p>Textbox #1
            <input type="text" name="text1" id="text1" maxlength="30">
        </p>
    </div>
    <div class="text">
        <p>Textbox #2
            <input type="text" name="text2" id="text2" maxlength="30">
        </p>
    </div>
    

    【讨论】:

    • 这很容易理解并且效果很好。谢谢。
    【解决方案2】:

    您可以使用.click(),而不是内联onclick() javascript:

    $(document).ready(function () {
        $(".text").hide();
        $('input[type="radio"]').eq(0).click(function() {
            $(".text").show()
        });
    });
    

    Updated Fiddle

    但是,您应该为 input 元素使用 .change() 事件:

    $(document).ready(function () {
        $(".text").hide();
        $('input[type="radio"]').eq(0).change(function() {
            $(".text").show()
        });
    });
    

    Updated Fiddle

    【讨论】:

      【解决方案3】:

      您可以使用此代码:

      $(document).ready(function() {
          $(".text").hide()
          $('[name=radio1]').on('change', function(){
              $('.text').toggle(this.value === 'Show');
          })
      });
      

      不推荐内联事件,所以在收音机上绑定一个更改事件,如果值为Show,那就显示吧!

      http://jsfiddle.net/tT48f/3/

      【讨论】:

        【解决方案4】:

        目前可以将点击的对象作为this以参数的形式传递给getResults(),其中this指的是当前点击的对象

        见下文

        脚本

        $(document).ready(function() {
            $(".text").hide()
        
        });
        function getResults(elem) {
            elem.checked && elem.value == "Show" ? $(".text").show() : $(".text").hide();
        };
        

        HTML

        <input type="radio" name="radio1" value="Show" onClick="getResults(this)">
        Do nothing                                                         ^^^^
        <input type="radio" name="radio1" value="Nothing" onclick="getResults(this)">
                                                                              ^^^^ 
        

        小提琴--&gt;http://jsfiddle.net/tT48f/7/

        【讨论】:

          【解决方案5】:

          重新定义一点你的 HTML 标记,然后你就只能使用 CSS:

          DEMO jsFiddle

          input[value=Nothing]:checked ~ .text{
              display: none;
          }
          

          【讨论】:

            【解决方案6】:

            检查这个demo jsFiddle

            jQuery

            $(document).ready(function() {
                $(".text").hide()
                $('[name=radio1]').on('change', function(){
                    $('.text').toggle(this.value === 'Show');
                })
            });
            

            【讨论】:

              【解决方案7】:

              试试看:

              $(document).ready(function() {
                $(".text").hide();
              
              });
              
              function getResults() {
                      $(".text").show();
                  };
              

              【讨论】:

                【解决方案8】:
                 1. $("input[name='Radio1']").change(function(){
                           if($(this).val()=="Ya") {
                                $("#QUESTION_1").fadeIn(250);
                           }
                           else {
                               $("#QUESTION_1").fadeOut(250); 
                           }        });
                

                【讨论】:

                • 能否请您详细说明您的答案,添加更多关于您提供的解决方案的描述?
                【解决方案9】:
                                        <div class="RdoClick">
                                            <asp:RadioButton ID="RadioSugges" runat="server" GroupName="PopupRadio" Text="&nbsp;&nbsp;&nbsp;C. Insert your suggestion:" />
                                        </div>
                                        <asp:TextBox ID="TextBox1" runat="server" class="PopupTxtBox" PlaceHolder="Enter your suggestion..."
                                            onClick="check();" TabIndex="1" />
                
                <script type="text/javascript">
                    function check() {
                        document.getElementById('<%=RadioSugges.ClientID%>').checked = true;
                    }
                
                </script>
                

                【讨论】:

                • 欢迎来到 StackOverflow。回答问题时请注意代码格式。还要尽量避免只用代码回答。
                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 2013-10-30
                • 1970-01-01
                • 2022-07-01
                • 2016-09-20
                • 2021-07-17
                • 2019-03-19
                • 1970-01-01
                相关资源
                最近更新 更多