【问题标题】:Show/hide div and clear filed value when change更改时显示/隐藏 div 并清除字段值
【发布时间】:2020-10-05 09:42:24
【问题描述】:

我有一些 div 会根据选择值显示。假设有两个输入字段名称为“Apartment 和 Bechelor”,如果我选择“Apartment”,则某些 div 和选择字段将显示与公寓相关。我面临的问题是,选择另一个时我无法清除字段值。就像,选择“公寓”后,我会选择单身汉。现在应该清楚公寓下方字段的值,这样如果我再次选择“公寓”,我将获得默认值或清理字段。

<div id="residential" >
   <input type="radio" value="apartment" id="type_apartment" name="type"  >
   <label for="type_apartment" class="radio-inline"> Apartment/Flat </label>
   <input type="radio" value="bachelor" id="type_bachelor" name="type">
   <label for="type_bachelor" class="radio-inline"> Bechelor  </label>
</div>
<!-- show this when apartment select -->
<div class="form-group " id="tenant-flat">
   <select id="tenant-type" class="form-control" name="tenant">
      <option value="">Anyone</option>
      <option  value="family">Family</option>
      <option value="bechelor" >Bechelor</option>
   </select>
</div>
<div class="form-group " id="flat-type">
   <div class="col-sm-12">
      <select id="" class="form-control" name="flat-type">
         <option value="">Select Flat Type</option>
         <option value="sublet" >Sublet</option>
         <option value="full-flat" >Full Flat</option>
      </select>
   </div>
</div>
<!-- show this when bechelor select -->
<div class="form-group " id="r-type">
   <div class="col-sm-12">
      <select id="room" class="form-control" name="room_type">
         <option value="">Select Room Type</option>
         <option value="seat">Seat</option>
         <option value="room" >Room</option>
      </select>
   </div>
</div>
<div class="form-group " id="tenant">
   <div class="col-sm-12">
      <select id="" class="form-control" name="tenant">
         <option value="">Select Member</option>
         <option value="family" >Family</option>
         <option value="student" >Student</option>
         <option value="job-holder" >Job Holder</option>
      </select>
   </div>
</div>
<script>
   $(document).ready(function(){
      $('#r-type').hide();
      $('#tenant').hide();
      $('#tenant-flat').hide();
       $('#flat-type').hide();
    
      $('.pretty input[type="radio"]').click(function(){
         if($(this).attr('value') == 'apartment'){
            $('#tenant-flat').show();
         }
         else{
            $('#flat-type').hide();
         }
      });
      
      var showDiv = document.getElementById("tenant-type");
      showDiv.onchange = function(){
            var hiddenDiv = document.getElementById("flat-type");
            hiddenDiv.style.display = (this.value == "family") ? "block":"none";
            var genderDiv = document.getElementById("gender");
            genderDiv.style.display = (this.value == "bechelor") ? "block":"none";
      };
   
      
   
      $('.pretty input[type="radio"]').click(function(){
         if($(this).attr('value') == 'bachelor' || $(this).attr('value') == 'sublet' || $(this).attr('value') == 'hostel' ){
            $('#r-type').show();
            $('#tenant').show();
          
            $('#tenant-type').hide();
   
         }
         else{
            $('#r-type').hide();
            $('#tenant').hide();
            $('#tenant-type').show();
           
   
         }
      });
   
   });
</script>

【问题讨论】:

  • by 我将获得默认值或干净的字段。您想要重置下拉字段或想要在公寓/单身汉之间切换之前选择什么用户?
  • 用户在切换前选择。假设用户选择公寓。然后用户将获得一个位于公寓下方的表单,其中将选择选项、单选按钮、复选框、输入字段。填写完信息后,如果用户选择bechelor,那么之前在公寓下填写的所有字段都会被清空。 bechelor 的情况也一样。

标签: javascript jquery css


【解决方案1】:

要重置下拉选项,您可以使用以下行将选择元素 selectIndex 属性的值设置为 0: $('.form-control').prop('selectedIndex', 0); 并在您的代码中:

$(document).ready(function(){
    $('#r-type').hide();
    $('#tenant').hide();
    $('#tenant-flat').hide();
     $('#flat-type').hide();
     
     $('#residential input[type="radio"]').click(function(){
         if($(this).attr('value') == 'apartment'){
            $('#tenant-flat').show();
            $('#flat-type').show();
            $('#r-type').hide();
            $('#tenant').hide();
         }
         else{
            $('#r-type').show();
            $('#tenant').show();
            $('#flat-type').hide();
            $('#tenant-flat').hide();
         }

         $('.form-control').prop('selectedIndex', 0);
      });

    $('#tenent-type').on('change', function() {
      if($('#flat-type').val =='family') {
        $('#flat-type').show();
      } else {
        $('#flat-type').hide();
      }
      
      if($('#gender').val =='bechelor') {
        $('#gender').show();
      } else {
        $('#gender').hide();
      }
    });
 });
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="residential" >
   <input type="radio" value="apartment" id="type_apartment" name="type"  >
   <label for="type_apartment" class="radio-inline"> Apartment/Flat </label>
   <input type="radio" value="bachelor" id="type_bachelor" name="type">
   <label for="type_bachelor" class="radio-inline"> Bechelor  </label>
</div>
<!-- show this when apartment select -->
<div class="form-group " id="tenant-flat">
   <select id="tenant-type" class="form-control" name="tenant">
      <option value="">Anyone</option>
      <option  value="family">Family</option>
      <option value="bechelor" >Bechelor</option>
   </select>
</div>
<div class="form-group " id="flat-type">
   <div class="col-sm-12">
      <select id="" class="form-control" name="flat-type">
         <option value="">Select Flat Type</option>
         <option value="sublet" >Sublet</option>
         <option value="full-flat" >Full Flat</option>
      </select>
   </div>
</div>
<!-- show this when bechelor select -->
<div class="form-group " id="r-type">
   <div class="col-sm-12">
      <select id="room" class="form-control" name="room_type">
         <option value="">Select Room Type</option>
         <option value="seat">Seat</option>
         <option value="room" >Room</option>
      </select>
   </div>
</div>
<div class="form-group " id="tenant">
   <div class="col-sm-12">
      <select id="" class="form-control" name="tenant">
         <option value="">Select Member</option>
         <option value="family" >Family</option>
         <option value="student" >Student</option>
         <option value="job-holder" >Job Holder</option>
      </select>
   </div>
</div>

【讨论】:

  • 感谢您的帮助。如果重置输入(文本、单选和复选框)字段怎么办?
  • 很高兴我能帮上忙。如果那是您正在寻找的答案,如果您可以这样检查,我会很高兴。关于您在评论中的问题-重置输入单选或复选框字段是什么意思?
  • by 重置下拉选项这个,我知道它只适用于选择标签或字段。如果有单选按钮、复选框等输入标签,我该怎么办?
  • 单选按钮和复选框有一个 checked 属性,您可以像这样设置为 false 或删除:$('input:checkbox').removeAttr('checked'); 您可能会在此处找到每种输入类型的正确重置方法ll 搜索“重置”
  • 谢谢。我得到了结果。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-16
  • 1970-01-01
相关资源
最近更新 更多