2013-02-23 27 views
303

Ich habe bereits alle möglichen Wege ausprobiert, aber ich habe es immer noch nicht funktioniert. Ich habe ein modales Fenster mit einem checkbox Ich mag, dass, wenn die modale öffnet, der checkbox Scheck oder deaktivieren Sie sollte auf einem Datenbankwert basieren. (Ich arbeite bereits mit anderen Formularfeldern.) Ich habe versucht, es zu überprüfen, aber es hat nicht funktioniert.jquery set checkbox checked

Meine 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> 

und die jquery:

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

Ich habe auch versucht mit attr und andere hier in den Foren gesehen, aber keiner scheint zu funktionieren. Kann mir jemand den richtigen Weg zeigen?

EDIT: ok, ich vermisse hier wirklich etwas ... Ich kann überprüfen/deaktivieren mit Code, wenn das Kontrollkästchen auf der Seite ist, aber es ist im modalen Fenster, kann ich nicht. Ich habe versucht, Dutzende von verschiedenen Arten ...

Ich habe einen Link, den Modal zu öffnen angenommen hat: von

und jquery zu „hören“ den Klick, und führen Sie einige Operationen wie Füllen einige Textfelder mit Daten kommen Datenbank. Alles funktioniert wie ich will, aber das Problem ist, dass ich das Kontrollkästchen nicht aktivieren/deaktivieren kann, indem ich den Code benutze. Hilfe bitte!

$(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

Ihr Modal dynamisch erstellt? –

+0

Welche Klasse wird auf Modal Div angewendet, wenn das Modal geöffnet wird? Wie überprüfen Sie den Datenbankwert - mit AJAX oder ist es bereits vorab abgerufen und in einer Variablen gespeichert? – user1428716

+0

Zoltan: nein, es ist auf der Seite nicht dynamisch – psopa

Antwort

37

Geck Code unten versuchen:

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

ODER

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

ODER

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

versucht ... funktioniert nicht ... :( – psopa

+17

Wie in KeyOfJ's Antwort, verwenden Sie '.prop ('checked', true)' anstelle von 'attr' - ich lief gerade in das gleiche Problem, und' prop' funktioniert. – semmelbroesel

+2

FYI Wenn Sie den ': checked 'Pseudo-Selektor oder andere native Checkbox-HTML-Features verwenden möchten, müssen Sie' .prop' verwenden. – benastan

2

Versuchen Sie dies, da Ihr wahrscheinlich jQuery UI (falls nicht bitte Kommentar)

+0

@ user2063626 - der Teil der js innerhalb der Funktion kopiert wird Ihre Antwort – user1428716

+0

user1428716 - versucht ... funktioniert nicht ... – psopa

16

Da Sie in einem modalen Fenster sind (ob dynamisch oder in der Seite) können Sie den folgenden Code verwenden, um Ihr Ziel zu erreichen: (Ich lief auf meiner Website das gleiche Problem und so habe ich es behoben)

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; 
    } 

In der obigen "kendoWindow" ist mein Fenster (mir ist dynamisch, aber ich weiß auch dies, wenn Anhängen an ein Element direkt auf der Seite). Ich durchlaufe ein Array von Daten ("queriesToAddToGroup"), um zu sehen, ob irgendwelche Zeilen das Attribut COPY haben. Wenn ja, möchte ich das Kontrollkästchen innerhalb des Fensters aktivieren, das dieses Attribut festlegt, wenn ein Benutzer aus diesem Fenster speichert.

+4

Es sollte sein bemerkte, dass, während andere Antworten auf die vorliegende Frage "funktionieren" können, die Verwendung von "prop", wie diese Antwort suggeriert, der richtige Weg ist, um dynamische jQuery-Kontrollkästchen zu aktivieren/deaktivieren. –

4

Sie können wie unten angegebenen Code schreiben.

HTML

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

jQuery

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

Hoffe, dass es für Sie arbeiten.

2

Haben Sie versucht, $("#estado_cat").checkboxradio("refresh") auf Ihrem Kontrollkästchen ausgeführt?

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

finden Array zurück, so verwenden [0] auch zu erhalten, wenn es nur ein Element ist

wenn Sie nicht finden, dann verwenden

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

dies in Mozilla fein gearbeitet Firefox für mich

+1

Das funktioniert, alle anderen Lösungen werden nicht erkannt, wenn Sie einen: karierten Stil in Ihrem CSS haben – bhappy

528

Sie haben die 'Stütze' Funktion verwenden:

.prop('checked', true); 

Bevor jQuery 1.6 (siehe user2063626's answer):

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

Sie scheinen die richtige Antwort zu haben. Könnten Sie das näher ausführen? http://StackOverflow.com/a/5876747/29182 – Ziggy

2

Dies funktioniert. Diese

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

tritt auf, weil Sie mit der neuesten Version von Jquery attr('checked') kehrt 'checked' während prop('checked') kehrt true.

3

für mich gearbeitet:

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

Benutzer $ ("# estado_cat"). Attr ("überprüft", "aktiviert"); –

1

ich auch auf dieses Problem gestoßen.

und hier ist mein alter hat Code nicht funktionieren

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

hier ist mein neuer Code, der jetzt gearbeitet wird:

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

so, der entscheidende Punkt ist, bevor es funktioniert, stellen Sie sicher, Die geprüfte Eigenschaft existiert und wurde nicht entfernt.

+0

Viel einfacher: 'Jbookaccess.prop (" checked ", data.access! = 'Private');' – Legionar

1

Aktivieren Sie das Kontrollkästchen nach dem Laden des modalen Fensters. Ich denke, Sie setzen das Kontrollkästchen, bevor Sie die Seite laden.

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

all vorgeschlagenen Antworten zu nehmen und sie zu meiner Situation anwenden - versuchen, eine Checkbox auf einem abgerufenen Wert true basierend auf aktivieren oder deaktivieren oder falsch (sollte das Kontrollkästchen) (sollte die Box nicht) - Ich versuchte alles oben und fand, dass unter Verwendung .prop ("überprüfte", wahr) und .prop ("überprüfte", falsche) die korrekte Lösung waren.

Ich kann noch keine Kommentare oder Antworten hinzufügen, aber ich fühlte, dass dies wichtig genug war, um zu der Konversation beizutragen.Hier

ist der Langschrift Code für eine fullcalendar Modifikation, die sagt, wenn der abgerufene Wert "Allday" wahr ist, dann die Checkbox mit der ID "even_allday_yn":

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

Warum nicht nur auf einer einzigen Zeile? '$ (" #even_allday_yn "). prop ('checked', allDay);' –

+0

Er versuchte die möglichen Werte zu demonstrieren. Wie würdest du den wirklichen Wert des "allDays" ohne ein Beispiel wie dieses hier kennen? –

+1

@ Xavier Hayoz. Dies funktioniert, wenn und nur wenn allDay 'wahr' oder 'falsch' als einen Wert für den Wert zurückgibt - nicht einen reinen binären Wert. Checkboxen sind schlecht in HTML gestaltet und ihr Status kann auf sehr unterschiedliche Weise ausgedrückt werden. Der sichere und einzige Weg den ich kenne ist: allday === 'true'? $ ('# even_allday_yn) .prop ("checked", true): $ (' # even_allday_yn) .prop ("checked", false). Beachten Sie den strikten Gleichheitsoperator. –

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

wird work.Make sicher Wahr und falsch sind nicht in Anführungszeichen.

+0

Attr wird das Kontrollkästchen nicht aktivieren, Prop ist derjenige, der die Überprüfung durchführt. Wie '.prop ('checked', true);' [Weitere Informationen in diesem Beitrag] (http://learn.jquery.com/using-jquery-core/faq/how-do-i-check-uncheck-a -checkbox-input-or-radio-button /) – casivaagustin

+0

@casivaagustin Hängt von der jQuery-Version ab. Ich glaube früher als jQuery 1.6, '.attr()' hat funktioniert, wie beschrieben. – vapcguy

11

Das Attribut "checked" aktiviert das Kontrollkästchen, sobald es existiert. Um ein Kontrollkästchen zu aktivieren/deaktivieren, müssen Sie das Attribut setzen/deaktivieren.

Für die Überprüfung der Box:

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

für die Box unchecking:

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

Für die geprüfte Status testen:

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

Hoffe, es hilft ...

Verwandte Themen