【问题标题】:Uncheck checked radio button by clicking on label using jQuery通过使用jQuery单击标签取消选中选中的单选按钮
【发布时间】:2018-04-21 04:04:13
【问题描述】:

我需要使用 jQuery 取消选中选中的单选按钮。按钮本身是隐藏的,所以我使用点击标签来触发它。到目前为止,我有:

HTML

<form>
  <h4>Where would you like to work?</h4>
  <div class="radio-holder">
    <input id="form1_areas1" name="areas" type="radio" value="area/london">
    <label for="form1_areas1">London</label>
  </div>
  <div class="radio-holder">
    <input id="form1_areas2" name="areas" type="radio" value="area/west-midlands">
    <label for="form1_areas2">West Midlands</label></div>
</form>

SCSS

form {
  max-width: 500px;
  margin: 0 auto;
  padding-top: 20px;
}
div.radio-holder {
  padding: 10px;
}
input[type="radio"] {
 display:none;
 &:checked+label {
  border-bottom: 2px solid #222222;
  padding-bottom: 0px;
 }
}

JQUERY

$(document).ready(function(){
  $("form input[type='radio']:checked + label").click(function(){
    $(this).prev().prop( "checked", false );
  });
});

这里是CodePen

但这并不是取消选中单选按钮。我知道这不是单选按钮的标准功能,但如果需要,我需要用户能够将单选按钮集恢复为未选中状态,同时还限制它们从一组选项中选择一个。非常感谢任何帮助。

干杯

迈克

【问题讨论】:

标签: javascript jquery html css radio-button


【解决方案1】:

要启用/禁用相同的收音机,您必须使用event.preventDefault() 来防止默认行为(单击标签时启用复选框,因此选中的道具将始终设置为 true )并以语法方式启用/禁用收音机,如图所示下面的sn-p:

$(document).ready(function(){
  $("label").click(function(e){
    e.preventDefault();
    $check = $(this).prev();
    if($check.prop('checked'))
      $check.prop( "checked", false );
    else 
      $check.prop( "checked", true );
      
    //console.log($check.prop("checked"));
  });
});
form {
  max-width: 500px;
  margin: 0 auto;
  padding-top: 20px;
}
div.radio-holder {
  padding: 10px;
}

input[type="radio"] {
 display:none;
}
input[type="radio"]:checked+label {
  border-bottom: 2px solid #222222;
  padding-bottom: 0px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form>
  <h4>Where would you like to work?</h4>
  <div class="radio-holder">
    <input id="form1_areas1" name="areas" type="radio" value="area/london">
    <label for="form1_areas1">London</label>
  </div>
  <div class="radio-holder">
    <input id="form1_areas2" name="areas" type="radio" value="area/west-midlands">
    <label for="form1_areas2">West Midlands</label></div>
</form>

【讨论】:

    【解决方案2】:

    你可以使用下一个技巧:
    - 添加data-num 属性。
    - 在每次点击时使用data-num 来选中/取消选中单选按钮。
    希望对您有所帮助:

    $(document).ready(function(){
      $("input").click(function(){
           $("input").not(this).attr("data-num", 1); 
           var data = $(this).attr("data-num")
           if(data==1){
              data = 2
              $(this).attr("data-num", data); 
              return;
           }
           if(data==2){
              data = 1
              $(this).prop('checked', false);
              $(this).attr("data-num", data); 
              return;
           }
      })  
    })
    form {
      max-width: 500px;
      margin: 0 auto;
      padding-top: 20px;
    }
    div.radio-holder {
      padding: 10px;
    }
    
    input[type="radio"] {
     display:none;
    }
    input[type="radio"]:checked+label {
      border-bottom: 2px solid #222222;
      padding-bottom: 0px;
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <form>
      <h4>Where would you like to work?</h4>
      <div class="radio-holder">
        <input id="form1_areas1" name="areas" type="radio" value="area/london" data-num="1">
        <label for="form1_areas1">London</label>
      </div>
      <div class="radio-holder">
        <input id="form1_areas2" name="areas" type="radio" value="area/west-midlands" data-num="1">
        <label for="form1_areas2">West Midlands</label></div>
    </form>

    【讨论】:

      猜你喜欢
      • 2015-11-17
      • 2012-06-08
      • 2023-02-19
      • 1970-01-01
      • 2016-12-25
      • 2011-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多