[英]How to check a checkbox with boolean values
因此,HTML规范要求您应将一个checked
属性添加到<input type="checkbox">
标记中,以将其标记为选中状态。 但是我只有一个布尔值true
或false
。
按照设计,我无法在布尔值解析为html之前添加任何逻辑:(。是否可以仅使用html或js检查加载时具有布尔值的Checkbox?我尝试了以下操作,但是onload
似乎不会触发:
<input type="checkbox" onload="javascript:this.checked=true" />
我知道我可以在jQuery中执行以下操作:
$("[checked='false']").prop('checked',false)
我正在寻找一种解决问题的优雅方法。 这必须解析整个DOM-Tree,并且会减慢我的页面的速度。
编辑(试图解释):
在我的公司中,有一个应用程序按设计执行以下操作:
<input type="checkbox" checked="%IsValide%" >
然后,服务器会自动用数据库值替换%IsValide%
var。 这里是对还是错。 但是,即使该值为false,也始终选中该复选框。 我知道这是由于html5的设计引起的:checked =“ true”和checked =“ false”会将复选框始终标记为已选中。
现在,我正在寻找一种解决方案,以使用%IsValide%
的true或false值来使用javascript(或什至更好的是使用html)正确选中该框。 我可以在html标记的任何位置使用%IsValide%
。 例如:
<input type="checkbox" onload="javascript:this.checked=%IsValide%" />
但是我无法在将其解析为HTML之前添加逻辑,如下所示:
if(%IsValide%) {
%IsValide%="checked";
}
else {
%IsValide%="";
}
我想了解您的要求。 我认为您可以使用一些简单的javascript完成它:
document.getElementById("yourCheckBoxId").checked = false; //this case it sets checked to false you can also do true
在页面加载时进行检查:
<body onload='document.getElementById("yourCheckBoxId").checked = true;'>
或避免body的onload属性进行检查:
<input type="checkbox" id="yourCheckBoxId" checked>
然后,您只需使用javascript进行更改即可。
我的另一个猜测是您要更改复选框的值吗? 你是? 在我的答案下方发表评论,说我不明白您的要求。 希望这可以帮助! 这是我的参考来源: http : //www.w3schools.com/jsref/prop_checkbox_checked.asp
如您所见,如果您公司的应用程序设置了checked="true"
或checked="false"
,那么这将无关紧要,因为checked
是一个布尔属性,并且“此布尔属性的存在指示默认情况下该控件处于选中状态”,并且该复选框将始终处于选中状态。
这应该解决它:
$('input[checked="false"]').prop('checked',false)
我认为最终您会以错误的方式进行操作,但是,如果您没有像我所说的那样没有其他选择 ,那么我认为最终(在性能方面)最好的做法是在输入中添加一个类(对或错)
<input type="checkbox" class="tocheck-true"></input>
<input type="checkbox" class="tocheck-false"></input>
然后查找该类:
$("input.tocheck-true").prop("checked",true);
因为我们仅在搜索具有该CSS类的输入,所以这应该表现得很好。
但是,再次,这似乎是一个完整的hack。 如果您问“如何使用胶带将发动机固定到汽车车身上”,也许您应该停下来看看是否应该问这个问题。 :)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.