如何将选中的复选框一次限制为一个
How to limit the checked checkboxes to just one at a time?
我正在尝试使用复选框创建一个过滤器。我一次只需要选中一个复选框。我该怎么做呢?
场景:页面有一个手表目录。用户希望根据男士或女士来筛选手表
下面是我的代码:$("#filter-options :checkbox").click(function()
{
$(".collection-wrapper .strap-wrapper").hide();
$("#filter-options :checkbox:checked").each(function()
{
$("." + $(this).val()).fadeIn();
});
if($('#filter-options :checkbox').filter(':checked').length < 1)
{
$(".collection-wrapper .strap-wrapper").fadeIn();
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<h3>Filter Items</h3>
<ul id="filter-options">
<li><input type="checkbox" value="filter_man" data-filter_id="man"> Man</li>
<li><input type="checkbox" value="filter_woman" data-filter_id="woman"> Woman</li>
</ul>
<div class="collection-wrapper">
<div class="strap-wrapper filter_man">
<h2>man</h2>
<p></p>
</div>
<div class="strap-wrapper filter_woman">
<h2>woman</h2>
<p></p>
</div>
<div class="strap-wrapper filter_man filter_woman">
<h2>man / woman</h2>
<p></p>
</div>
<div class="strap-wrapper filter_woman">
<h2>woman</h2>
<p></p>
</div>
</div>
提前感谢!
复选框用于选择多个选项的值。您需要的是单选按钮。它们正是为此目的而使用的。一次只能选择一个单选按钮。所以将你的代码替换为:
<ul id="filter-options">
<li><input type="radio" name="filter" value="filter_man" data-filter_id="man"> Man</li>
<li><input type="radio" name="filter" value="filter_woman" data-filter_id="woman"> Woman</li>
</ul>
示例如下: http://www.w3schools.com/tags/tryit.asp?filename=tryhtml5_input_type_radio
单选按钮就是你要找的;)
看看这些链接:
jQuery api demo小提琴例子HTML:
<form id="myForm">
<input type="radio" name="myRadio" value="1" /> 1 <br />
<input type="radio" name="myRadio" value="2" /> 2 <br />
<input type="radio" name="myRadio" value="3" /> 3 <br />
</form>
JS
$('#myForm input').on('change', function() {
alert($('input[name="myRadio"]:checked', '#myForm').val());
});
你可以使用单选按钮或者你可以这样做:
$('input[type=checkbox]').change(function(){
if ($('input[type=checkbox]:checked').length > 1) {
this.checked = false;
}
})
你可以只使用单选按钮,但如果你想用复选框,解决方案是相当简单的。
当你点击其中一个复选框时,选中所有的复选框并删除"已选中"状态,然后只添加已选中的复选框
像这样:
// On checkbox click
$("#filter-options input[type=checkbox]").click(function(event) {
// Uncheck all checkboxes
$("#filter-options input[type=checkbox]").prop("checked", false);
// Check that one that you clicked
$(this).prop("checked", true)
});
相关文章:
- 引导程序崩溃一次只能看到一个
- 有没有一个抽象层,这样我就可以集成一次,然后使用pusher、pubnub或faye
- 一次又一次地在新的和相同的选项卡中打开一个url
- jQuery .each 循环一次一个
- 触发双重功能,一次一个
- 欧芹JS - 一次一个错误
- jQuery fadeIn 元素一次一个 onClick
- javascript循环需要显示隐藏列表onclick一次一个
- 在网格视图内(单击时标签转到文本框)一次一个
- 使用单个输入元素上传多个文件(不是多个选择,而是一次一个)
- CSS:折叠导航,一次一个元素
- 如何一次一个滚动绘制每个SVG路径(按时间顺序)
- Javascript切换(一次一个)
- Javascript的多个元素相同的函数,一次一个
- 如何一次一个地淡入和淡出列表中的一个项目
- 一次一个警报
- 一次一个地通过一系列函数传递ID
- 切换多个图像时,单击,但一次一个
- Phonegap媒体插件一次一个声音
- Jquery循环通过列表时,按下键一次一个