javascript - 如何定位一个复选框并根据其值显示输入字段
问题描述
function selectOpenField() {
$("input[name='vrije_velden']").on('click', function() {
var $box = $(this);
if ($box.is(":checked")) {
var group = "input:checkbox[name='" + $box.attr("name") + "']";
$(group).prop("checked", false);
$box.prop("checked", true);
var val = $(this).val();
$("input[name='vrije_velden']").each(function(key, value){
var $thisValue = $(value).val();
if ($thisValue === val) {
$('#'+val).slideDown();
} else {
$(group).slideUp();
}
});
} else {
$box.prop("checked", false);
$(group).slideUp();
}
});
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="custom-control custom-checkbox">
<input type="checkbox" class="custom-control-input" id="checkbox"
value="checkboxHolder" name="vrije_velden">
<label class="custom-control-label" for="checkbox">Checkbox</label>
</div>
<div class="custom-control custom-checkbox">
<input type="checkbox" class="custom-control-input" id="radio"
value="radioBoxHolder" name="vrije_velden">
<label class="custom-control-label" for="radio">Radio</label>
</div>
<div class="custom-control custom-checkbox">
<input type="checkbox" class="custom-control-input" id="input"
value="inputBoxHolder" name="vrije_velden">
<label class="custom-control-label" for="input">Input</label>
</div>
我创建了 3 个复选框,但是只能选中一个复选框而不是多个复选框。都好。
我的问题
我根据已选中的复选框的值显示某些 div,这是可行的,但是当我单击另一个复选框以显示 div B 时,div A 不会消失。第二个问题是,当我单击一个复选框并再次取消选中该复选框时,该 div 也仍然存在。
这部分是我最近尝试的一段代码
var val = $(this).val();
$("input[name='vrije_velden']").each(function(key, value){
var $thisValue = $(value).val();
if ($thisValue === val) {
$('#'+val).slideDown();
} else {
$(group).slideUp();
}
});
我希望达到的目标
- 3个复选框,只能选中一个(单选按钮类型),但用户也应该能够取消选中(这就是我不使用单选按钮的原因)
- 当我单击复选框 A 时,应该显示 div A,当我单击复选框 B 时,复选框 A 变为未选中状态,并且 div A 回到
display: none
,但 div B 显示(等等)复选框的值也是分区。 - 当我单击复选框 A 时,应该显示 div A,但是当我取消选中复选框 A 时,应该
display: none
再次显示 div A。
提前致谢。
解决方案
如果我正确理解了您的问题,则应该这样做:
在这段代码中,如果你选中一个复选框,它下面的div会出现,其他的div会消失,如果你不选中它,它就会消失。
所以基本上只能看到一个div。
$(function(){
$("input[name='vrije_velden']").on("click",function(){
if($(this).is(":checked")){
$("input[name='vrije_velden']").not($(this)).prop("checked",false);
var val=$(this).attr("value");
$(".div").each(function(){
if($(this).attr("id")==val){
$(this).removeClass("none");
}
else{
$(this).addClass("none");
}
});
}
else{
$(".div").addClass("none");
}
});
});
.none{
display:none;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="custom-control custom-checkbox">
<input type="checkbox" class="custom-control-input" id="checkbox"
value="checkboxHolder" name="vrije_velden">
<label class="custom-control-label" for="checkbox">Checkbox</label>
</div>
<div class="custom-control custom-checkbox">
<input type="checkbox" class="custom-control-input" id="radio"
value="radioBoxHolder" name="vrije_velden">
<label class="custom-control-label" for="radio">Radio</label>
</div>
<div class="custom-control custom-checkbox">
<input type="checkbox" class="custom-control-input" id="input"
value="inputBoxHolder" name="vrije_velden">
<label class="custom-control-label" for="input">Input</label>
</div>
<div class="div none" id="checkboxHolder">
Checkbox div
</div>
<br>
<div class="div none" id="radioBoxHolder">
Radio div
</div>
<br>
<div class="div none" id="inputBoxHolder">
Input div
</div>
推荐阅读
- command-line-interface - 从命令行执行模拟下的二进制文件?
- for-loop - 为什么 For 循环返回“尝试获取 Vector3 值的长度”
- python - 如何根据另一个数据框中的存在来更新数据框中列的值
- windows - AutoIt RDP 连接
- c++ - 在向量中查找对象
C++ - c# - 如何使用 Flowlayout 面板控件 C# 去 trought foreach
- python - 在没有结束编号的范围内设置 For 循环
- c# - 尝试打开远程证书存储时出现“找不到网络路径”
- java - 使用自定义身份验证提供程序在 Spring Security 中接受无效密码
- swift - 使用 Core Graphics/DisplayLink 的持久非清除视图