javascript - 重置表单时,样式化的单选按钮不会取消选择

标签 javascript html css bootstrap-4

我有 3 个单选按钮:

<div class="col-md-12 form-group">
<label for="car-rental-pickup-location" class="mb-2">Pickup Location<small class="text-danger">*</small></label><br>
<div class="btn-group my-tab btn-group-toggle nav" data-toggle="buttons">
    <a href="#tab-pickup" class=" btn btn-outline-secondary flex-fill pudo" data-toggle="tab">
        <input type="radio" name="car-rental-pickup-location" id="car-rental-pickup-location-la" value="la" required onfocus="dateCheck();">Los Angeles
    </a>
    <a href="#tab-pickup" class="btn btn-outline-secondary flex-fill pudo" data-toggle="tab">
        <input type="radio" name="car-rental-pickup-location" id="car-rental-pickup-location-sf" value="sf" onfocus="dateCheck();">San Francisco
    </a>
    <a href="#tab-pickup" class="btn btn-outline-secondary flex-fill pudo" data-toggle="tab">
        <input type="radio" name="car-rental-pickup-location" id="car-rental-pickup-location-oc" value="oc" onfocus="dateCheck();">Orange County
    </a>
</div>

</div>

屏幕截图:

enter image description here

当我重置表单或使用 javascript 检查不同的单选按钮时,它们不会更新。如何更新这些单选按钮?

它正在运行:

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>


<div class="col-md-12 form-group">
<label for="car-rental-pickup-location" class="mb-2">Pickup Location<small class="text-danger">*</small></label><br>
<div class="btn-group my-tab btn-group-toggle nav" data-toggle="buttons">
    <a href="#tab-pickup" class=" btn btn-outline-secondary flex-fill pudo" data-toggle="tab">
        <input type="radio" name="car-rental-pickup-location" id="car-rental-pickup-location-la" value="la" required onfocus="dateCheck();">Los Angeles
    </a>
    <a href="#tab-pickup" class="btn btn-outline-secondary flex-fill pudo" data-toggle="tab">
        <input type="radio" name="car-rental-pickup-location" id="car-rental-pickup-location-sf" value="sf" onfocus="dateCheck();">San Francisco
    </a>
    <a href="#tab-pickup" class="btn btn-outline-secondary flex-fill pudo" data-toggle="tab">
        <input type="radio" name="car-rental-pickup-location" id="car-rental-pickup-location-oc" value="oc" onfocus="dateCheck();">Orange County
    </a>
</div>

</div>

最佳答案

如果我没有正确理解您的问题;你需要真正去确保他们没有被选中,提交表格或任何不会神奇地为你做的事情。希望这会有所帮助,干杯!

附录:在 OP 指定问题之后,罪魁祸首是 anchor 标记 parentNode 保留其 active css 类,因此在视觉上它仍然看起来好像组中的一个被选中。补救措施如下;

resetGroup = (groupName) => {
  const group = document.getElementsByName(groupName);
  
  group.forEach(function(el) {
    el.checked = false;
    
    if (el.parentNode.classList.contains('active')) {
      el.parentNode.classList.remove('active');
    }
  });
}
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>


<div class="col-md-12 form-group">
<label for="car-rental-pickup-location" class="mb-2">Pickup Location<small class="text-danger">*</small></label><br>
<div class="btn-group my-tab btn-group-toggle nav" data-toggle="buttons">
    <a href="#tab-pickup" class=" btn btn-outline-secondary flex-fill pudo" data-toggle="tab">
        <input type="radio" name="car-rental-pickup-location" id="car-rental-pickup-location-la" value="la" required>Los Angeles
    </a>
    <a href="#tab-pickup" class="btn btn-outline-secondary flex-fill pudo" data-toggle="tab">
        <input type="radio" name="car-rental-pickup-location" id="car-rental-pickup-location-sf" value="sf">San Francisco
    </a>
    <a href="#tab-pickup" class="btn btn-outline-secondary flex-fill pudo" data-toggle="tab">
        <input type="radio" name="car-rental-pickup-location" id="car-rental-pickup-location-oc" value="oc">Orange County
    </a>
</div>

</div>
<button onclick="resetGroup('car-rental-pickup-location')">Reset Group</button>

关于javascript - 重置表单时,样式化的单选按钮不会取消选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58140236/

相关文章:

javascript - 访问已编译指令的隔离范围

javascript - AngularJS radio 表现得很奇怪

javascript图像动画在两个图像之间闪烁

css - 如果高度小于 X%,则将宽度设置为 100%

javascript - 将 svg 元素定位在 div 上

CSS 文件输入隐藏路径

javascript - 我应该如何处理嵌套条件语句?

javascript - React-native - 基于用户位置的drawerLabel

html - 背景图片加载不出来

javascript - 为什么这个 JQuery 下拉插件只适用于第一个下拉菜单?