首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >选中的Jquery设置为true,而非false。

选中的Jquery设置为true,而非false。
EN

Stack Overflow用户
提问于 2016-01-16 14:18:59
回答 1查看 302关注 0票数 0

我正在尝试将复选框的选中值设置为来自Mongo的传入数据。如果值为true,则工作正常,但当值为false时,它仍会选中该框。有人能告诉我是怎么回事吗。

代码语言:javascript
复制
<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;

});
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-16 14:23:08

document.getElementsByName("interested")[0].checked=document.getElementsByName("interested")[0].value;根据元素的值设置checked属性,该元素始终是一个字符串。所以它会将字符串强制为布尔值。所有非空白字符串都是真实的,因此"true""false"都将checked设置为true

如果使用==测试,则可以相应地设置checked

代码语言:javascript
复制
document.getElementsByName("interested")[0].checked =
    document.getElementsByName("interested")[0].value == "true";

也就是说,HTML/DOM中复选框值的用途是而不是,以指示是否选中了复选框,因此首先将value设置为"true""false"可能不是您真正想要做的。value的目的是说明如果选中复选框的话,应该与表单一起发送哪些值。示例:

代码语言:javascript
复制
<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文档中的多个元素使用相同的idids必须是唯一的。所以您不能在所有的复选框上使用id="chk"

所以我怀疑你真的想要这样的东西:

代码语言:javascript
复制
<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。但我使他们独特,以证明你必须这样做。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34827980

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档