【发布时间】:2018-08-07 23:20:01
【问题描述】:
$("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")
目前两个复选框都是“可检查的”,但我希望一次只检查一个,并在填充另一个复选框时删除另一个复选框。
此外,我不确定如何确保“电话”字段仅在填充“是”框时显示,而在填充“否”框时隐藏。
【问题讨论】:
-
为什么不只使用单选按钮?
-
使用最语义化的元素极大地提高了整体的可访问性和可用性。如果某个东西像一个按钮,它应该使用
button元素而不是a或span等。表单元素也是如此。如果某物的行为类似于无线电输入数组,则应使用无线电input元素。 -
在这种情况下,您应该使用收音机本身。同样,正如我所看到的,您是否要提交表单,该值取自输入名称,并且具有两个复选框并检查启用/检查的条件并根据它获取值是没有意义的。