【问题标题】:How to hide divs when radio button is checked on page load?在页面加载时选中单选按钮时如何隐藏 div?
【发布时间】:2016-01-16 23:49:37
【问题描述】:

我有一个现有的 jquery 代码,如果选择了单选按钮,它会隐藏 div。但是,当页面加载时..如果这个单选按钮已经被选中,我希望能够隐藏 div 而无需点击任何东西。

<script>
    $('input[name=resident]').click(function () {
            if (this.id == "residentNo") {
                $(".d").hide('slow');
                $('.d').find('#precinctNum').val('');
                $('.d').find('#yearStartedLiving').val('');                 
            } else {
                $(".d").show('slow');
                $('.d').find('#precinctNum').val('');
                $('.d').find('#yearStartedLiving').val('');
            }
        });     
</script>

html表单:

<label class="radio-inline"><input type="radio" class = "res" id = "residentYes" name="resident" value="Yes" checked> Yes</label>
<label class="radio-inline"><input type="radio" class = "res" id = "residentNo"  name="resident" value="No" > No</label>

<div class="d item form-group" >
    <label class="control-label col-md-3 col-sm-3 col-xs-12" for="name">Precinct Number <span class="required">*</span>
    </label>
<div class="col-md-6 col-sm-6 col-xs-12">
    <input id="precinctNum" class="form-control col-md-5 col-xs-12" name="precinctNum" data-validate-length-range="7" required="required" type="number">
</div>
</div>

<div class="d item form-group">
    <label class="control-label col-md-3 col-sm-3 col-xs-12" for="name">Start of Residency (Year) <span class="required">*</span>
    </label>
<div class="col-md-6 col-sm-6 col-xs-12">
    <input type="text" id="yearStartedLiving" name="yearStartedLiving" class="form-control col-md-5 col-xs-12" required="required" data-inputmask="'mask': '9999'">
</div>
</div>

我已经尝试了几个小时,但它似乎不起作用。您的帮助将不胜感激!!谢谢!

【问题讨论】:

    标签: javascript jquery html css radio-button


    【解决方案1】:
     document.addEventListener("DOMContentLoaded", function(event) { // Will check after DOM is ready
            if($('#residentNo').is(':checked')){  // Check if residentNo is checked
            toggleDiv("residentNo")   
            }
          });
    
    
        $('input[name=resident]').click(function () {
        toggleDiv(this.id)
    
        })
    
        function toggleDiv(id){
                    if (id == "residentNo") {
                        $(".d").hide('slow');
    $(".d").find('#precinctNum, #yearStartedLiving, #birthplace, #weight, #height, #income').val('');
    
                    } else {
                        $(".d").show('slow');
    $(".d").find('#precinctNum, #yearStartedLiving, #birthplace, #weight, #height, #income').val('');
    
                    }
                };
    

    JSFIDDLE

    注意:在此示例中,我已将 residentNo 设置为 checked 以进行演示

    【讨论】:

    • 这对我有用!!太感谢了!!终于,多亏了你,我的问题解决了!!我的队友也说谢谢。
    • @WandaMaximoff 请考虑接受它作为答案
    【解决方案2】:

    您可以在您感兴趣的字段上触发事件点击:

    $('input[name=resident][value="No"]').trigger('click');

    $(function () {
      $('input[name=resident]').click(function () {
        if (this.id == "residentNo") {
          $(".d").hide('slow');
        } else {
          $(".d").show('slow');
        }
        $('.d').find('#precinctNum, #yearStartedLiving').val('');
      });
      
      
      $('input[name=resident][value="No"]').trigger('click');
    });
    <script src="http://code.jquery.com/jquery-1.11.3.js"></script>
    
    
    <label class="radio-inline"><input type="radio" class = "res" id = "residentYes" name="resident" value="Yes" checked> Yes</label>
    <label class="radio-inline"><input type="radio" class = "res" id = "residentNo"  name="resident" value="No" > No</label>
    
    <div class="d item form-group" >
        <label class="control-label col-md-3 col-sm-3 col-xs-12" for="name">Precinct Number <span class="required">*</span>
        </label>
        <div class="col-md-6 col-sm-6 col-xs-12">
            <input id="precinctNum" class="form-control col-md-5 col-xs-12" name="precinctNum" data-validate-length-range="7" required="required" type="number">
        </div>
    </div>
    
    <div class="d item form-group">
        <label class="control-label col-md-3 col-sm-3 col-xs-12" for="name">Start of Residency (Year) <span class="required">*</span>
        </label>
        <div class="col-md-6 col-sm-6 col-xs-12">
            <input type="text" id="yearStartedLiving" name="yearStartedLiving" class="form-control col-md-5 col-xs-12" required="required" data-inputmask="'mask': '9999'">
        </div>
    </div>

    【讨论】:

    • 非常感谢您的回答!!!我已经解决了这个问题,但谢谢。这将作为我和其他人未来的参考。谢谢!!!
    • 您非常友善。非常感谢
    【解决方案3】:

    你可以像下面那样做。只需在$(document).ready 中添加代码即可。希望对您有所帮助。

    if($('#residentNo').is(':checked')){
        $(".d").hide();
        $('.d').find('#precinctNum, #yearStartedLiving').val('');
    }
    
    $('input[name=resident]').click(function () {
         if (this.id == "residentNo") {
             $(".d").hide('slow');
             $('.d').find('#precinctNum, #yearStartedLiving').val('');               
         } else {
             $(".d").show('slow');
             $('.d').find('#precinctNum, #yearStartedLiving').val('');
         }
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <label class="radio-inline"><input type="radio" class = "res" id = "residentYes" name="resident" value="Yes" checked> Yes</label>
    <label class="radio-inline"><input type="radio" class = "res" id = "residentNo"  name="resident" value="No" > No</label>
    
    <div class="d item form-group" >
        <label class="control-label col-md-3 col-sm-3 col-xs-12" for="name">Precinct Number <span class="required">*</span>
        </label>
    <div class="col-md-6 col-sm-6 col-xs-12">
        <input id="precinctNum" class="form-control col-md-5 col-xs-12" name="precinctNum" data-validate-length-range="7" required="required" type="number">
    </div>
    </div>
    
    <div class="d item form-group">
        <label class="control-label col-md-3 col-sm-3 col-xs-12" for="name">Start of Residency (Year) <span class="required">*</span>
        </label>
    <div class="col-md-6 col-sm-6 col-xs-12">
        <input type="text" id="yearStartedLiving" name="yearStartedLiving" class="form-control col-md-5 col-xs-12" required="required" data-inputmask="'mask': '9999'">
    </div>
    </div>

    【讨论】:

    • 我觉得代码可以缩短为$('.d').find('#precinctNum, #yearStartedLiving, #birthplace, #weight, #height, #income').val('');
    • 感谢您的建议。我已经更新了我的答案。 @mylee
    • 它没有用,但由于您的建议,我确实缩短了我的代码。我不知道这是可能的!再次感谢您。
    • 显然这是可能的。我已经用完整的代码更新了我的答案。 @WandaMaximoff
    • 通过缓存6次调用查询进行更多优化。 var d = $(".d");
    猜你喜欢
    • 1970-01-01
    • 2015-12-23
    • 1970-01-01
    • 2021-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-23
    相关资源
    最近更新 更多