2013-02-23 126 views
303

我已经尝试了所有可能的方式,但我仍然没有得到它的工作。 我有一个模式窗口checkbox我希望当模式打开时,checkbox检查或取消选中应该基于数据库值。 (我已经与其他人一起工作了。)我开始尝试去检查它,但是它不起作用。jquery设置复选框选中

我的HTML DIV:

<div id="fModal" class="modal" > 
    ... 
    <div class="row-form"> 
     <div class="span12"> 
      <span class="top title">Estado</span> 

      <input type="checkbox" id="estado_cat" class="ibtn"> 
     </div> 
    </div>    
</div> 

和jQuery的:

$("#estado_cat").prop("checked", true); 

我也试图与attr,和其他人在这里看到的论坛,但没有一个似乎工作。 有人能指点我吗?

编辑: 好的,我真的错过了这里的东西......如果复选框在页面中,我可以选中/取消选中代码,但它是在模态窗口中,我不能。我试过几十种不同的方式...

我有一个是应该打开模态的链接:

和jQuery“监听”点击并执行类似填充一些文本框从数据来一些操作数据库。一切工作就像我想要的但问题是,我不能设置复选框选中/未选中使用代码。请帮助!

$(function() { 
$(".editButton").click(function(){ 
     var id = $(this).data('id'); 
     $.ajax({ 
      type: "POST", 
      url: "process.php", 
      dataType:"json", 
      data: { id: id, op: "edit" }, 
     }).done(function(data) { 
//the next two lines work fine, i.e., it grabs the value from database and fills the textboxes 
      $("#nome_categoria").val(data['nome_categoria']); 
      $("#descricao_categoria").val(data['descricao_categoria']); 
//then I tried to set the checkbox checked (because its unchecked by default) and it does not work 
      $("#estado_cat").prop("checked", true); 
     $('#fModal').modal('show'); 
}); 
    evt.preventDefault(); 
    return false; 
    });  
}); 
+1

你的模态动态创建? – 2013-02-23 19:03:47

+0

当模态打开时,什么类应用于模态div?另外你如何检查数据库值 - 使用AJAX还是已经预取并存储在变量中? – user1428716 2013-02-23 19:07:03

+0

Zoltan:不,它在页面上不是动态的 – psopa 2013-02-25 16:13:39

回答

37

哥们试试下面的代码:

$("div.row-form input[type='checkbox']").attr('checked','checked') 

OR

$("div.row-form #estado_cat").attr("checked","checked"); 

OR

$("div.row-form #estado_cat").attr("checked",true); 
+3

尝试...不工作... :( – psopa 2013-02-25 16:14:45

+17

正如在KeyOfJ的回答中,使用'.prop('checked',true)'而不是'attr' - 我遇到了同样的问题,'prop'工作。 – semmelbroesel 2013-10-16 20:45:20

+2

仅供参考如果您想使用':checked'伪选择器或其他原生复选框HTML功能,则必须使用'.prop'。 – benastan 2013-11-14 00:57:26

2

试试这个,因为使用jQuery UI可能是你为(如果不是请评论)

$("#fModal").dialog({ 
    open: function(event, ui) { 

    if(//some hidden value check which stores the DB value==expected value for 
     checking the Checkbox) 

     $("div.row-form input[type='checkbox']").attr('checked','checked'); 

    } 
    }); 
+0

@ user2063626 - 函数内部的js部分从您的回答 – user1428716 2013-02-23 19:14:58

+0

user1428716 - 已尝试...不工作... – psopa 2013-02-25 16:36:29

16

既然你是一个模态窗口(无论是动态还是在页面),您可以使用下面的代码来实现自己的目标:(我遇到了我的网站上同样的问题,这是我的固定它)

HTML:

<div class="content-container" style="text-align: right;"> 
    <input type="checkbox" id="QueryGroupCopyQueries"> 
    <label for="QueryGroupCopyQueries">Create Copies</label>             
</div> 

CODE:

$.each(queriesToAddToGroup, function (index, query) { 
    if (query.groupAddType === queriesGroupAddType.COPY) { 

     // USE FIND against your dynamic window and PROP to set the value 
     // if you are using JQUERY 1.6 or higher. 
     $(kendoWindow).find("input#QueryGroupCopyQueries").prop("checked", true); 

     return; 
    } 

在上面的 “kendoWindow” 是我的窗口(我的是动态的,但我也这样做时,直接添加到页面中的元素)。我循环访问一组数据(“queriesToAddToGroup”)以查看是否有行具有COPY属性。如果是这样,我想打开设置该属性的窗口内的复选框,当用户从这个窗口中保存。

+4

应该是注意到,尽管其他问题的答案可能“起作用”,但正如答案所示,使用“prop”是实现动态jQuery复选框检查/取消检查的正确方法。 – 2013-08-14 23:03:05

4

你可以像下面给出的代码一样写。

HTML

<input type="checkbox" id="estado_cat" class="ibtn"> 

jQuery的

$(document).ready(function(){ 
    $(".ibtn").click(function(){ 
     $(".ibtn").attr("checked", "checked"); 
    }); 
}); 

希望它为你工作。

2

您是否试过在您的复选框上运行$("#estado_cat").checkboxradio("refresh")

3
$("#divParentClip").find("#subclip_checkbox")[0].checked=true; 

查找将返回数组,所以使用[0]来获得哪怕只有一个项目

,如果你不使用找到然后

$("#subclip_checkbox").checked=true; 

这在Mozilla工作正常火狐我

+1

这可行,所有其他解决方案不检测,如果你有一个:在你的css中检查过的样式 – bhappy 2015-11-04 19:05:31

528

您必须使用“道具”功能:

.prop('checked', true); 

的jQuery 1.6之前(见user2063626's answer):

.attr('checked','checked') 
+4

你似乎有正确的答案。你能详细说明一下吗? http://stackoverflow.com/a/5876747/29182 – Ziggy 2013-12-10 14:29:33

2

这工作。

$("div.row-form input[type='checkbox']").attr('checked','checked'); 
2

这是因为你用最新版本的jQuery attr('checked')回报'checked'prop('checked')回报true

3

为我工作:

$checkbok.prop({checked: true}); 
+0

user $(“#estado_cat”)。attr(“checked”,“checked”); – 2014-03-10 17:23:07

1

我遇到这个问题了。

,这里是我的老不起作用代码

if(data.access == 'private'){ 
    Jbookaccess.removeProp("checked") ; 
    //I also have tried : Jbookaccess.removeAttr("checked") ; 
}else{ 
    Jbookaccess.prop("checked", true) 
} 

这里是我的新代码,这是现在的工作:

if(data.access == 'private'){ 
    Jbookaccess.prop("checked",false) ; 
}else{ 
    Jbookaccess.prop("checked", true) 
} 

所以,关键的一点是它的工作之前,要确保检查的属性确实存在并且未被删除。

+0

简单得多:'Jbookaccess.prop(“checked”,data.access!='private');' – Legionar 2016-06-06 08:43:00

1

设置加载模态窗口后的复选框。我想你是在加载页面前设置复选框。

$('#fModal').modal('show'); 
$("#estado_cat").attr("checked","checked"); 
56

综合各方面提出的答案,并把它们应用到我的情况 - 试图选择或取消基于对真实检索到的值复选框(应检查框)或假(不要选中框) - 我尝试了上述所有内容,发现使用.prop(“检查”,true).prop(“checked”,false)是正确的解决方案。

我不能添加评论或答案,但我觉得这很重要,可以添加到对话中。

这里是一个fullcalendar修改是说,如果获取的值“阿迪”是真草书代码,然后用ID“even_allday_yn”选中该复选框:

if (allDay) 
{ 
    $("#even_allday_yn").prop('checked', true); 
} 
else 
{ 
    $("#even_allday_yn").prop('checked', false); 
} 
+34

为什么不只在一条线上? '(“#even_allday_yn”)。prop('checked',allDay);' – 2014-10-23 14:43:31

+0

他试图证明可能的值。如果没有像这样的例子,你怎么知道“allDay”的真正价值? – 2017-01-30 02:00:37

+1

@Xavier Hayoz。当且仅当allDay返回'true'或'false'作为litteral值 - 这不是纯粹的二进制值。复选框在html中设计的非常糟糕,它们的检查状态可以用非常不同的方式表示。我知道的安全和唯一的方法是:allDay ==='true'? $('#even_allday_yn).prop(“checked”,true):$('#even_allday_yn).prop(“checked”,false)。注意严格的相等运算符。 – 2017-04-27 08:46:09

9
.attr("checked",true) 
.attr("checked",false) 

将work.Make肯定真假不在引号内。

+0

Attr不会检查复选框,prop是执行检查的人。像'.prop('checked',true);'[更多信息在这篇文章中](http://learn.jquery.com/using-jquery-core/faq/how-do-i-check-uncheck-a -checkbox-input-or-radio-button /) – casivaagustin 2014-10-08 22:08:00

+0

@casivaagustin取决于jQuery版本。如前所述,我相信早于jQuery 1.6,'.attr()'确实有效。 – vapcguy 2015-07-01 19:09:21

11

“checked”属性一旦存在就勾选复选框。因此,要选中/取消选中复选框,您必须设置/取消设置属性。

为了检查框:

$('#myCheckbox').attr('checked', 'checked'); 

对于取消勾选框:

$('#myCheckbox').removeAttr('checked'); 

为了测试检查状态:

if ($('#myCheckbox').is(':checked')) 

希望它可以帮助...