2013-02-23 131 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')) 

希望它可以幫助...