我不确定是否正确制定了标题,但逻辑是这样的。
我有4个复选框, 3是和 1否。选择3 是将取消选中否并选择否将取消选中是。
我的jQuery如下:
var yes = $("input[type=checkbox].yes");
if (yes.length == yes.filter(":checked").length) {
$("#no").attr("checked", false);
} else if($("#no").is(":checked")) {
yes.attr("checked", false);
} else {
// do nothing
}
有用。但是,如果我选中了所有是,我就无法选择否。相反,我需要取消选中1 是来选择否。 否也是如此。如果我检查否,则取消选中所有是。但是,我需要取消选中否才能再次选择是。
如果选中所有是,我是否仍然可以选择否?
谢谢!
更新
现在包括HTML
<form id="checkbox-testing" >
<div class="checkform">
<label>
<input class="yes" type="checkbox" value="Yes, 1" id="yes1"><span> Yes, 1</span>
</label>
<label>
<input class="yes" type="checkbox" value="Yes, 2" id="yes2"><span> Yes, 2</span>
</label>
<label>
<input class="yes" type="checkbox" value="Yes, 3" id="yes3"><span> Yes, 3</span>
</label>
<label>
<input type="checkbox" value="No" id="no"><span> No</span>
</label>
</div>
<input type="submit" value="Test" />
</form>
答案 0 :(得分:0)
使用.prop()来测试已检查的属性,而不是.attr() - 以下代码片段使用.prop然后使用.change()事件 - 在这种情况下,我只是在构造输出但是你可以改变另一个复选框的道具。
编辑 - 我刚刚更新了我的答案,让一个无线电按钮选择或另一个选项和一个按钮来清除点击的已检查属性。
$(document).ready(function(){
$("input[type=radio]").change(function(){;
console.log("yes: " + $(".yes").prop("checked"));
console.log(" no: " + $(".no").prop("checked"));
})
$('#clear').click(function(){
$("input[type=radio]").prop('checked',false)
})
})
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<label for ="yes">Yes
<input type ="radio" name ="test" id="yes" class="yes" checked value"yes"/></label>
<label for ="no">No
<input type ="radio" name ="test" id="no" class="no" value = "no"/>
<hr/>
<button type ="button" name ="test" id="clear" >Clear Value</button>
&#13;
var yes = $("input[type=checkbox].yes");
if (yes.length == yes.filter(":checked").length) {
$("#no").prop("checked", false);
} else if($("#no").is(":checked")) {
yes.prop("checked", false);
} else {
// do nothing
}