jsnoob: alle gecheckten checkboxen ausgeben?

Hallo!
Ich versuche mich gerade etwas an Javascript. Ich benutze außerdem das jQuery.
Nun mein Problem:
Ich habe ein div mit einer eindeutigen id.
In diesem div habe ich eine variable Anzahl an Checkboxen. Beim einem Submit will ich nun den value aller gecheckten Checkboxen ausgeben (in einem alert).

Mein Ansatz der js Funktion war folgender:

function foo(){  
if($('#divid input').is(':checked')){  
        alert($('#divid input').val());  
    }else{  
        alert("nothing checked!")  
    }  
$('#myform').submit();  
}  

Doch das funktioniert so natürlich nicht.
Könnt ihr mir hier helfen?

  1. Hi,

    Ich versuche mich gerade etwas an Javascript. Ich benutze außerdem das jQuery.

    Keine besonders gute Kombination - etwas Grundlagenwissen über den Umgang mit JavaScript sollte man sich aneignen, *bevor* man mit solchen Frameworks arbeitet.

    if($('#divid input').is(':checked')){

    $('#divid input') liefert dir alle Elemente, auf die der Selektor zutrifft.
    „Alle Elemente“ haben aber keine gemeinsame Eigenschaft, checked zu sein oder nicht, sondern jedes von ihnen einzeln. Also brauchst du eine Schleife, die das für jedes Element einzeln prüft.

    Doch das funktioniert so natürlich nicht.

    Wenn das so „natürlich“ ist, dann müsstest du doch selber wissen, woran es liegt ...?

    MfG ChrisB

    --
    “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
  2. Hallo!

    Könnt ihr mir hier helfen?

    Können wir schon - aber natürlich SelfHTML-Style, so dass Du Dir selbst helfen musst - wir geben nur ein paar Schubser in die richtige Richtung.

    1. Du möchtest erst einmal alle input-Felder mit checked-Attribut innerhalb Deines divs selektieren. Schmeiße .is weg, Du brauchst nur einen Selektor - wie sieht der aus?

    2. Die Ausgabe sollte alle selektierten Werte umfassen, wahrscheinlich mit ", " getrennt. Dazu verwendest Du optimalerweise ein Array, etwa so:

    var result=[]; $([selektor von eben]).each(function() { result.push(this.value); })

    Danach stehen alle Werte in result drin - Du musst sie nur noch ausgeben:

    alert(result.join(', '));

    Mehr Hilfe solltest Du eigentlich nicht benötigen.

    Gruß, LX

    --
    RFC 1925, Satz 2: Egal, wie fest man schiebt, ganz gleich, wie hoch die Priorität ist, man kann die Lichtgeschwindigkeit nicht erhöhen.