首页 > 解决方案 > 如何使复选框的行为类似于使用相同名称的单选按钮

问题描述

截屏

$("input[name='yesFollowup']").on(element_click, function(e){
            if($(this).attr("id") == "yesFollowup"){
                $(".phone_number_yes").show();
            }else{
                $(".phone-number").hide();   
            }
        });

        $('input.followUp:checkbox').on('change', function() {
            $('input.followUp:checkbox').prop({
                'checked': false,
                'disabled': false
            }).removeClass('active');
            $(this).prop({
                'checked': true,
                'disabled': true
            }).addClass('active');
        });
input[type=checkbox] {
    position: relative;
    width: 22px;
    height: 22px;
    border: 1px solid #fff;
    vertical-align: -5px;
    color: #fff;
}

input[type=checkbox] {
    -webkit-appearance: none;
    -moz-appearance: none;
}

[type=checkbox], [type=radio] {
    -webkit-box-sizing: border-box;
    box-sizing: border-box;
    padding: 10px;
    margin-left: 8px;
    margin-right: 20px;
}

input[type=checkbox]::before {
    content: "✔";
    position: absolute;
    font-size: 1.2em;
    right: 0;
    top: -0.3em;
    color: #ffffff;
    visibility: hidden;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.2.3/jquery.min.js"></script>
.col-sm-2.dealer-item#dealer-item-b.flex-container
    

                    .radio-like-checkboxes(data-validation='required').form-check
                            label(for="yesFollowup")= __('YES')
                            input#yesFollowup(type="checkbox",name='yesFollowup', value="yes", data-value='phone_number_yes')  

                    .radio-like-checkboxes.form-check
                            label(for="noFollowup")= __('NO')
                            input#noFollowup(type="checkbox",name='noFollowup', value="no")

目前,这两个复选框都是“可检查的”,但我希望一次只检查一个,并在填充另一个复选框时删除另一个复选框。

此外,我不确定如何确保仅在填充“是”框时显示“电话”字段,并在填充“否”框时隐藏。

标签: jquerycssformspug

解决方案


为什么不使用 CSS 使用看起来像复选框的单选按钮?

优点是根本没有代码,因为......而且单选按钮已经存在排他性行为......所以使用它。没有什么能阻止你用复选标记让它们看起来是方形的。

关于电话号码... 使用单选值比较来切换电话输入的显示。

$("[name='call']").on("click",function(){
    $(".phone").toggle($(this).val()=="yes");
});
.container{
  background:#000;
  color:#fff;
  height:1.8em;
  padding:0.2em;
}

input[type='radio'] {
  position: relative;
  width: 22px;
  height: 22px;
  -webkit-box-sizing: border-box;
  box-sizing: border-box;
  padding: 10px;
  margin-left: 8px;
  margin-right: 20px;
  opacity:1;
}

/* The square box */
input[type='radio']:before {
  content: "";
  position: absolute;
  font-size: 1.2em;
  right: 0;
  top: 0;
  width:1.3em;
  height:1.3em;
  color: #888;
  border:1.2px solid black;
  border-radius:3px;
  background:#fff;
}

/* The checkmark */
input[type='radio']:checked:after {
  content: "✔";
  position: absolute;
  font-size: 1.6em;
  right: 0.15em;
  top: -0.2em;
  color: #000;
}

.phone{
  transform: translateY(-0.4em);
  display:none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="container">
  Yes <input type="radio" name="call" value="yes"> No<input type="radio" name="call" value="no"> <input type="text" class="phone" name="phone" placeholder="Your phone #">
</div>


推荐阅读