我正在尝试将复选框的选中值设置为来自Mongo的传入数据。如果值为true,则工作正常,但当值为false时,它仍会选中该框。有人能告诉我是怎么回事吗。
<input type="checkbox" id="chk" name="interested" value="{{inmate.interested}}" onclick="chkSet(this)">Not Interested <br/>
<input type="checkbox" id="chk" name="correspondence" value="{{inmate.correspondence}}" onclick="chkSet(this)">Req Correspondence<br/>
<input type="checkbox" id="chk" name="study" value="{{inmate.study}}" onclick="chkSet(this)">Request Study<br/>
<input type="checkbox" id="chk" name="specialtyItemsApproved" value="{{inmate.specialtyItemsApproved}}" onclick="chkSet(this)">Specialty Items
Approved<br/>
<br>
$(document).ready(function(){
document.getElementsByName("interested")[0].checked=document.getElementsByName("interested")[0].value;
document.getElementsByName("correspondence")[0].checked=document.getElementsByName("correspondence")[0].value;
document.getElementsByName("study")[0].checked=document.getElementsByName("study")[0].value;
document.getElementsByName("specialtyItemsApproved")[0].checked=document.getElementsByName("specialtyItemsApproved")[0].value;
});发布于 2016-01-16 14:23:08
document.getElementsByName("interested")[0].checked=document.getElementsByName("interested")[0].value;根据元素的值设置checked属性,该元素始终是一个字符串。所以它会将字符串强制为布尔值。所有非空白字符串都是真实的,因此"true"和"false"都将checked设置为true。
如果使用==测试,则可以相应地设置checked:
document.getElementsByName("interested")[0].checked =
document.getElementsByName("interested")[0].value == "true";也就是说,HTML/DOM中复选框值的用途是而不是,以指示是否选中了复选框,因此首先将value设置为"true"或"false"可能不是您真正想要做的。value的目的是说明如果选中复选框的话,应该与表单一起发送哪些值。示例:
<input type="checkbox" name="roomoptions" value="non-smoking">
<input type="checkbox" name="roomoptions" value="with-kitchen">
<input type="checkbox" name="roomoptions" value="en-suite">如果选中该复选框,表单将包含roomoptions=non-smoking;如果选中该复选框,则为roomoptions=with-kitchen;如果选中该复选框,则为/或roomoptions=en-suite。如果没有检查其中任何一个,表单将根本不发送任何roomoptions。如果选中所有三个复选框,则所有三个复选框都将被发送。
另外,不能对HTML/DOM文档中的多个元素使用相同的id。ids必须是唯一的。所以您不能在所有的复选框上使用id="chk"。
所以我怀疑你真的想要这样的东西:
<input type="checkbox" id="chk-interested" name="interested" {{#if inmate.interested}}checked{{/if}} onclick="chkSet(this)">Not Interested <br/>
<input type="checkbox" id="chk-correspondence" name="correspondence" {{#if inmate.correspondence}}checked{{/if}}" onclick="chkSet(this)">Req Correspondence<br/>
<input type="checkbox" id="chk-study" name="study" {{#if inmate.study}}checked{{/if}} onclick="chkSet(this)">Request Study<br/>
<input type="checkbox" id="chk-specialty-items-approved" name="specialtyItemsApproved" {{#if inmate.specialtyItemsApproved}}checked{{/if}} onclick="chkSet(this)">Specialty Items那你就根本不需要你的JavaScript了。
我没有对这些值设置值,这意味着当表单被发送进来时(如果您在表单中发送),interested的值以及服务器将接收到的值将是默认值"on"。例如,表单要么根本没有interested字段(没有选中复选框),要么有interested=on。
请注意,除非您将这些id用于某些事情,否则您只需将它们置之不理;表单提交时将使用的是name。但我使他们独特,以证明你必须这样做。
https://stackoverflow.com/questions/34827980
复制相似问题