如何使用布尔值检查复选框

时间:2014-11-12 14:27:27

标签: javascript jquery html html5

因此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%="";
}

3 个答案:

答案 0 :(得分:4)

我试图了解你的要求。我认为你可以用一些简单的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

答案 1 :(得分:0)

如果贵公司的应用程序设置了checked="true"checked="false",则无关紧要,因为checked是一个布尔属性,并且&#34;存在此布尔属性表示默认选择控件&#34;,并始终选中复选框。

这应该解决它:

$('input[checked="false"]').prop('checked',false)

<强> jsFiddle example

答案 2 :(得分:0)

我认为你最终会以错误的方式解决这个问题,但如果我没有没有其他选择就像你说的那样,我认为你最好的结局(表现明智)将在您的输入中添加一个类(true或false)

<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类的输入,所以这应该表现得非常好。

但是,再次,这似乎是一个完整的黑客。如果您要问&#34;我怎样才能使用胶带将引擎固定在我的车身上,&#34;也许你应该停下来看看你是否应该询问这个问题。 :)