steffi arnold: Prüfen ob ein Radio Feld markiert ist

Beitrag lesen

hi dennis,

ich habe dein beispiel mal umgebaut, so wie es bei mir lauten müsste:

function chkPayment()
{
   var okay = false;
   for(var i = 0; i < document.formpayment.getElementsByName('payment').length; i++)
   {
     if(document.formpayment.getElementsByName('payment')[i].checked == true)
     {
        okay = true;
     }
   }
   if (okay == false)
   {
      alert("Sie haben keine Zahlungsart ausgewählt");
      return false;
   }
}

Die Funktion wird ausgeführt, sobald der Form abgeschickt wird. Leider wird keine Meldung angezeigt, wenn ich nichts ausgewählt habe.

Ist da noch was dran falsch?

steffi

Hi steffi,

function chkPayment()
{
   alert(document.form1.auswahl.value);
}

Er sagt immer das das Feld nicht definiert.

Richtig, denn da es ja mehrere Elemente mit dem selben Namen gibt, werden die so angesprochen:

document.form1.auswahl[0].value;

document.form1.auswahl[1].value;
document.form1.auswahl[2].value;


>   
> Auf diese Art und Weise kannst du also nicht rausfinden, welches Element angeklickt ist.  
>   
>   
> > Wie kann ich prüfen ob ein Radio Element angeklickt ist.  
>   
> Du kannst die Eigenschaft checked abfragen - die ist true oder false, je nachdem, ob das Element angeklickt ist oder nicht.  
>   
> Was du also machen musst, ist nacheinander alle Felder abzufragen und so herrauszufinden, welches ausgewählt ist - denke aber auch daran, dass keins der Elemente ausgewählt sein kann.  
>   
> So könnte das ungefähr aussehen:  
>   
> ~~~javascript

function chkPayment()  

> {  
>    for(var i = 0; i < document.getElementsByName('auswahl').length; i++)  
>    {  
>      if(document.getElementsByName('auswahl')[i].checked == true)  
>      {  
>         return document.getElementsByName('auswahl')[i].value;  
>      }  
>    }  
>    return false;  
> }

Diese kleine Funkion liefert dir entweder den Wert des Value Attributes von dem Feld zurück, welches ausgewählt ist, oder false, wenn kein Radio Buttons ausgewählt ist.

MfG, Dennis.