繁体   English   中英

如何检查具有布尔值的复选框

[英]How to check a checkbox with boolean values

因此,HTML规范要求您应将一个checked属性添加到<input type="checkbox">标记中,以将其标记为选中状态。 但是我只有一个布尔值truefalse

按照设计,我无法在布尔值解析为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)

jsFiddle示例

我认为最终您会以错误的方式进行操作,但是,如果您没有像我所说的那样没有其他选择 ,那么我认为最终(在性能方面)最好的做法是在输入中添加一个类(对或错)

<input type="checkbox" class="tocheck-true"></input>
<input type="checkbox" class="tocheck-false"></input>

然后查找该类:

$("input.tocheck-true").prop("checked",true);

http://jsfiddle.net/mu81yz7y/

因为我们仅在搜索具有该CSS类的输入,所以这应该表现得很好。

但是,再次,这似乎是一个完整的hack。 如果您问“如何使用胶带将发动机固定到汽车车身上”,也许您应该停下来看看是否应该这个问题。 :)

暂无
暂无

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

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