繁体   English   中英

即使在添加attr后也允许检查复选框(“checked”,false)

[英]Allow checking to a checkbox even after adding attr(“checked”, false)

我不确定是否正确地制定了标题,但逻辑是这样的。

我有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 是以选择 同样的事情, 没有 如果我选中“ 否” ,则将取消选中所有是”。 但是,我需要取消选中“ 否”才能再次选择“ 是”

如果选中是”,我是否仍然可以选择“

谢谢!

UPDATE
现在包括HTML

<form id="checkbox-testing" >
<div class="checkform">
    <label>                        
      <input class="yes" type="checkbox" value="Yes, 1" id="yes1"><span>&nbsp;Yes, 1</span> 
    </label>
    <label>                        
      <input class="yes" type="checkbox" value="Yes, 2" id="yes2"><span>&nbsp;Yes, 2</span>
    </label>
    <label>                        
      <input class="yes" type="checkbox" value="Yes, 3" id="yes3"><span>&nbsp;Yes, 3</span>
    </label>
    <label>                        
      <input type="checkbox" value="No" id="no"><span>&nbsp;No</span>
    </label>
</div>
<input type="submit" value="Test" />
</form>

使用.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) }) }) 
 <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> 

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
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM