已选中jquery set复选框

pso*_*opa 434 checkbox jquery

我已经尝试了所有可能的方法,但我仍然没有得到它的工作.我有一个模态窗口,checkbox我希望当模态打开时,checkbox检查或取消选中应该基于数据库值.(我已经与其他表单字段合作了.)我开始尝试检查但是它不起作用.

我的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>
Run Code Online (Sandbox Code Playgroud)

和jquery:

$("#estado_cat").prop( "checked", true );
Run Code Online (Sandbox Code Playgroud)

我也尝试过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;
    });     
});
Run Code Online (Sandbox Code Playgroud)

小智 753

你必须使用'prop'功能:

.prop('checked', true);
Run Code Online (Sandbox Code Playgroud)

在jQuery 1.6之前(参见user2063626的回答):

.attr('checked','checked')
Run Code Online (Sandbox Code Playgroud)

  • 你似乎有正确的答案.你能详细说说吗?http://stackoverflow.com/a/5876747/29182 (4认同)
  • 很高兴知道你不能像我最初想象的那样在较新版本的 jQuery 中使用 attr (2认同)
  • 这应该是公认的答案。 (2认同)

小智 74

获取所有建议的答案并将其应用于我的情况 - 尝试检查或取消选中基于检索到的值为true的复选框(应选中复选框)或false(不应选中复选框) - 我尝试了以上所有内容发现使用.prop("checked",true).prop("checked",false)是正确的解决方案.

我还不能添加评论或答案,但我觉得这非常重要,可以添加到对话中.

以下是完整日历修改的longhand代码,该代码表示​​如果检索到的值"allDay"为true,则选中ID为"even_allday_yn"的复选框:

if (allDay)
{
    $( "#even_allday_yn").prop('checked', true);
}
else
{
    $( "#even_allday_yn").prop('checked', false);
}
Run Code Online (Sandbox Code Playgroud)

  • 为什么不在一条线上呢?`$("#event_allday_yn").prop('checked',allDay);` (45认同)
  • 他试图证明可能的价值。没有这里的示例,您如何知道“ allDay”的真正价值? (3认同)

小智 54

老兄尝试下面的代码:

$("div.row-form input[type='checkbox']").attr('checked','checked')
Run Code Online (Sandbox Code Playgroud)

要么

$("div.row-form #estado_cat").attr("checked","checked");
Run Code Online (Sandbox Code Playgroud)

要么

$("div.row-form #estado_cat").attr("checked",true);
Run Code Online (Sandbox Code Playgroud)

  • 在KeyOfJ的答案中,使用`.prop('checked',true)`而不是`attr` - 我遇到了同样的问题,而`prop`也可以. (24认同)
  • 仅供参考,如果你想使用`:checked`伪选择器或其他原生复选框HTML功能,你必须使用`.prop`. (3认同)

Key*_*OfJ 17

由于您处于模态窗口(无论是动态的还是在页面中),您可以使用以下代码来实现您的目标:(我在我的网站上遇到了同样的问题,这就是我修复它的方法)

HTML:

<div class="content-container" style="text-align: right;">
    <input type="checkbox" id="QueryGroupCopyQueries">
    <label for="QueryGroupCopyQueries">Create Copies</label>                                                   
</div>
Run Code Online (Sandbox Code Playgroud)

码:

$.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;
    }
Run Code Online (Sandbox Code Playgroud)

在上面的"kendoWindow"是我的窗口(我的是动态的,但是当我直接在页面中附加元素时也会这样做).我循环遍历数据数组("queriesToAddToGroup")以查看是否有任何行具有COPY属性.如果是这样,我想打开窗口中的复选框,该复选框在用户从此窗口保存时设置该属性.

  • 应该注意的是,虽然对手头问题的其他答案可能"有效",但使用"prop"作为这个答案表明是完成动态jQuery复选框检查/取消检查的正确方法. (4认同)

小智 17

"checked"属性会在复选框存在时立即"勾选"该复选框.因此,要选中/取消选中复选框,您必须设置/取消设置属性.

选中框:

$('#myCheckbox').attr('checked', 'checked');
Run Code Online (Sandbox Code Playgroud)

取消选中此框:

$('#myCheckbox').removeAttr('checked');
Run Code Online (Sandbox Code Playgroud)

用于测试检查状态:

if ($('#myCheckbox').is(':checked'))
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你...


Yun*_*Gun 11

我知道这需要一个 Jquery 解决方案,但我只是想指出,在普通的 javascript 中切换它非常容易。

var element = document.getElementById("estado_cat");
element.checked = true;
Run Code Online (Sandbox Code Playgroud)

它将适用于所有当前和未来版本。

  • 我认为有时我们会忘记一些更基本的东西使用原始 js 会更好。 (2认同)

小智 10

.attr("checked",true)
.attr("checked",false)
Run Code Online (Sandbox Code Playgroud)

会工作.确保真假不在引号内.

  • Attr 不会检查复选框,prop 是进行检查的对象。像`.prop('checked', true);` [这篇文章中的更多信息](http://learn.jquery.com/using-jquery-core/faq/how-do-i-check-uncheck-a -复选框输入或单选按钮/) (2认同)

Sub*_*bir 5

你可以写下面给出的代码.

HTML

<input type="checkbox"  id="estado_cat" class="ibtn">
Run Code Online (Sandbox Code Playgroud)

jQuery的

$(document).ready(function(){
    $(".ibtn").click(function(){
        $(".ibtn").attr("checked", "checked");
    });
});
Run Code Online (Sandbox Code Playgroud)

希望它对你有用.


lor*_*eto 5

如果您想将此功能用于 GreaseMonkey 脚本以自动选中页面上的复选框,请记住,仅设置 checked 属性可能不会触发相关操作。在这种情况下,“单击”复选框可能会(并设置 checked 属性)。

$("#id").click()
Run Code Online (Sandbox Code Playgroud)


rez*_*ghi 5

<body>
      <input id="IsActive" name="IsActive" type="checkbox" value="false">
</body>

<script>
    $('#IsActive').change(function () {
         var chk = $("#IsActive")
         var IsChecked = chk[0].checked
         if (IsChecked) {
          chk.attr('checked', 'checked')
         } 
         else {
          chk.removeAttr('checked')                            
         }
          chk.attr('value', IsChecked)
     });
</script>
Run Code Online (Sandbox Code Playgroud)