jquery - 如何使复选框的行为类似于使用相同名称的单选按钮
问题描述
$("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")
目前,这两个复选框都是“可检查的”,但我希望一次只检查一个,并在填充另一个复选框时删除另一个复选框。
此外,我不确定如何确保仅在填充“是”框时显示“电话”字段,并在填充“否”框时隐藏。
解决方案
为什么不使用 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>
推荐阅读
- lightbox - 在 nanogallery2 灯箱中分组图像
- javascript - Html Ajax按钮不做任何事情
- python - 列出所有 TSP 路由组合(5 个顶点)
- vue.js - Vue组件通信
- javascript - Javascript 扩展运算符
- javascript - 使用 jquery 通过单个 ajax 请求发送数组和其他数据
- azure - Azure 流分析 - 仅当事件与前一个事件不同时才输出事件
- hdfs - 其他应用程序访问数据时 HDFS 文件替换
- node.js - 松露拆箱反应有类型错误默认值。然后不是一个函数
- wpf - 如何在 RowDetails RowHeaderTemplate 中动态设置按钮高度