# Javascript automatisierte Formular/Radiobutton-Abfrage



## redshefox (25. Juni 2003)

Hallo,


ich bin noch Java-Script-Neuling und mein Problem ist folgendes:

Ich möchte eine automatisierte Formularabfrage generieren und stolpere über die Radiobuttons. Nicht nur die nicht gecheckten sondern auch die gecheckten Radiobuttons erhalten alle eine alert-Box mit der Aufforderung, vollständige Angaben zu machen. Nicht so ganz das, was ich wollte. 

Meine Abfrage sieht im Moment so aus:

```
<html>
<head>
<title></title>
<script language="JavaScript">


function pruef()
{
anzahl_formularfelder=document.formular.length;


for (i=0; i<anzahl_formularfelder; i++)

aktuelles_element=document.formular.elements[i];

if (akutelles_element[i].type=="radio")
{
for (var j=0; j<aktuelles_element.length; j++)
{
var wert = false;
if (akutelles_element[j].checked==true)
{
var wert = true;
}
}

if (!wert)
{
alert ("Bitte vollständige Angaben!");
return false;
}
}
return true;

}

</script>

</head>

<body>
<form action="" method="" target="" name="formular" onSubmit="return pruef();">
Radio 1 <input type="radio" name="radiogroup" value="1">
Radio 2 <input type="radio" name="radiogroup" value="2">
Radio 3 <input type="radio" name="radiogroup" value="3">
Radio 4 <input type="radio" name="radiogroup" value="4">
Radio 5 <input type="radio" name="radiogroup" value="5">


<input type="Submit" name="ab" value="ab dafür">
</form>
</body>
```


Die for-Schleife wird einfach nicht durchlaufen. Was habe ich falsch gemacht. 

Danke schon im voraus für die Beantwortung.

Viele Grüsse

Redshefox


----------



## Budda (25. Juni 2003)

Hallo ...
also ich habe bei mir das mal ausprobiert, ganz geht es noch nicht aber 
	
	
	



```
aktuelles_element=document.formular.elements[i];
```
 funktioniert schonmal garnicht, sag mein Browser! "...onSubmit="return pruef();" dort ist das Simikolon zuviel.
Und dann würde ich gern mal wissen was du mit der Länge anfangen willst! Das versteh ich net ...

ciao ;-)


----------



## redshefox (25. Juni 2003)

Hallo,

danke für Deine Rückantwort. Das überflüssige Semikolon habe ich bereits entfernt. Dummer Fehler. Hätte mir selbst auffallen können.

Zu Deiner Frage bezüglich der verwendeten Eigenschaft "length" folgende Erläuterung:

Das Formular soll eine automatisierte Abfrage enthalten, ob die Angaben des Users vollständig sind. Dieses Script soll anwendbar sein für künftige Fragebögen, ohne dass die Javascript-Programmierung angeglichen werden muss.

Da Formularelemente ein Array sind, habe ich versucht, über die Eigenschaft "length" die Arraylänge festzustellen. Diese wollte ich über die For-Schleife einlesen und abarbeiten lassen, so dass es nicht nötig ist, die Anzahl der Formularelemente zu kennen und jedes einzeln über elements[0], elements[1] bzw. das "name"-Attribut anzusprechen.

Hast Du eine Idee, wie das gehen könnte? 

Grüsse

Redshefox


----------



## Budda (25. Juni 2003)

mh ... also ich werde es mir demnächst nochmal genauer anschauen, falls bis dahin noch niemand schneller war. Ich bin nämlich grad dabei PHP zu lernen ...
Aber mit der Länge der Textfelder funktioniert "document.formular.length;" das auch nicht ... das ist quasi die Länge des Formulars! Wenn ich das dann richtig verstanden habe würde ich auf <20 abfragen, denn standartmäßig ist die Größe der Felder auf 20 Zeichen gesetzt

ciao, der Budda


----------



## Andreas Gaisbauer (27. Juni 2003)

Hallo redshefox,


```
<head>
<title></title>
<script language="JavaScript">

function pruef(formular,element)
{
  var x=0;
  var og = document.forms[formular].elements[element];
    
  for(var i=0; i<og.length; i++){
    if(og[i].checked == true){
      x++;    
    }
  }

  if(x==0){
    alert("Bitte Eingaben vervollständigen!");
    return false;
  }
  else{
    alert("ok");
    return true;
  }
}

</script>
</head>
<body>

<form name="formular" onSubmit="return pruef('formular','radiogroup')">
    Radio 1 <input type="radio" name="radiogroup" value="1">
    Radio 2 <input type="radio" name="radiogroup" value="2">
    Radio 3 <input type="radio" name="radiogroup" value="3">
    Radio 4 <input type="radio" name="radiogroup" value="4">
    Radio 5 <input type="radio" name="radiogroup" value="5">

<input type="submit" name="ab" value="ab dafür">
</form>
</body>
```
so funktionierts  - Ich gehe die jeweilige Gruppe durch (wird der Funktion übergeben). Wenn ein Radio checked ist, zähle ich eine Variable hoch. Zum schluss wird nur noch verglichen, ob die Variable den Anfangszustand hat (-> dann Error) oder nicht (-> dann OK)...



@Budda


> Aber mit der Länge der Textfelder funktioniert "document.formular.length;" das auch nicht ... das ist quasi die Länge des Formulars! Wenn ich das dann richtig verstanden habe würde ich auf <20 abfragen, denn standartmäßig ist die Größe der Felder auf 20 Zeichen gesetzt


Hä? Versteh ich nicht . Mit Lenght bekommst du die Anzahl der Elemente im aktuellen Objekt. Das hat nix mit Textfeldern oder so zu tun. Was du meinst ist imo entweder "size" (Breite der Anzeige bei Textelementen) oder "maxLength" (maximale Anzahl eingebbarer Zeichen)... oder hab ich dich falsch verstanden?


ciao


----------



## Bone Gasher (21. Juni 2006)

Guten Tag zusammen,

mich würde gerne interessieren, wie man dieses Script


```
<script language="JavaScript">

function pruef(formular,element)
{
  var x=0;
  var og = document.forms[formular].elements[element];

  for(var i=0; i<og.length; i++){
    if(og[i].checked == true){
      x++;
    }
  }

  if(x==0){
    alert("Bitte Eingaben vervollständigen!");
    return false;
  }
  else{
    alert("ok");
    return true;
  }
}

</script>
</head>
<body>

<form name="formular" onSubmit="return pruef('formular','radiogroup')">
    Radio 1 <input type="radio" name="radiogroup" value="1">
    Radio 2 <input type="radio" name="radiogroup" value="2">
    Radio 3 <input type="radio" name="radiogroup" value="3">
    Radio 4 <input type="radio" name="radiogroup" value="4">
    Radio 5 <input type="radio" name="radiogroup" value="5">

<input type="submit" name="ab" value="ab dafür">
```
gepostet von Andreas Gaisbauer

mit 2 radiogruppen erstellen kann, da ich leider so im Internet nicht fündig geworden bin bis auf hier und dieses für eine Onlineumfrage nutzen möchte mit insgesamt 10 Fragen davon 2 Fragen mit Radiobuttons

Danke für die Hilfe

Gruß

René


----------



## Sven Mintel (21. Juni 2006)

Entferne 3 von den 5 Radio-Buttons


----------



## Bone Gasher (21. Juni 2006)

Sven Mintel hat gesagt.:
			
		

> Entferne 3 von den 5 Radio-Buttons




ich verstehe leider nicht genau was du damit sagen möchtest.... bin leider nicht so bewandert mit JavaScript, kenne aber die grundlegende Syntax und Aufbaustruktur.


----------



## Sven Mintel (21. Juni 2006)

```
Radio 1 <input type="radio" name="radiogroup" value="1">
    Radio 2 <input type="radio" name="radiogroup" value="2">
    Radio 3 <input type="radio" name="radiogroup" value="3">
    Radio 4 <input type="radio" name="radiogroup" value="4">
    Radio 5 <input type="radio" name="radiogroup" value="5">
```
Das sind 5 Radiobuttons...wenn du da 3 Zeilen löschst, sind es nur noch 2 Radiobuttons


----------



## Bone Gasher (21. Juni 2006)

Ich meinte es eher so:

```
<script language="JavaScript">

function pruef(formular,element)
{
  var x=0;
  var og = document.forms[formular].elements[element];

  for(var i=0; i<og.length; i++){
    if(og[i].checked == true){
      x++;
    }
  }

  if(x==0){
    alert("Bitte Eingaben vervollständigen!");
    return false;
  }
  else{
    alert("ok");
    return true;
  }
}

</script>
</head>
<body>

<form name="formular" onSubmit="return pruef('formular','radiogroup')">
Frage 1 
   Antwort 1 <input type="radio" name="radiogroup" value="1">
   Antwort 2 <input type="radio" name="radiogroup" value="2">
   Antwort 3 <input type="radio" name="radiogroup" value="3">
   Antwort 4 <input type="radio" name="radiogroup" value="4">
   Antwort 5 <input type="radio" name="radiogroup" value="5">
   Antwort 6 <input type="radio" name="radiogroup" value="6">
   Antwort 7 <input type="radio" name="radiogroup" value="7">
   Antwort 8 <input type="radio" name="radiogroup" value="8">
<br><br>
Frage 2
   Antwort 1 <input type="radio" name="radiogroup2" value="1">
   Antwort 2 <input type="radio" name="radiogroup2" value="2">
   Antwort 3 <input type="radio" name="radiogroup2" value="3">
   Antwort 4 <input type="radio" name="radiogroup2" value="4">
<input type="submit" name="ab" value="ab dafür">
```

entschuldigt bitte, dass ich mich so unverständlich ausgedrückt habe meinte 2 Fragen in denen einmal 8 Antworten zur Verfügung stehen und einmal 4 Antworten zur Verfügung stehen.


----------



## Sven Mintel (21. Juni 2006)

Ahso....probiers so:

```
<form name="formular" onSubmit="return (pruef('formular','radiogroup') && pruef('formular','radiogroup2'))">
Frage 1 
   Antwort 1 <input type="radio" name="radiogroup" value="1">
   Antwort 2 <input type="radio" name="radiogroup" value="2">
   Antwort 3 <input type="radio" name="radiogroup" value="3">
   Antwort 4 <input type="radio" name="radiogroup" value="4">
   Antwort 5 <input type="radio" name="radiogroup" value="5">
   Antwort 6 <input type="radio" name="radiogroup" value="6">
   Antwort 7 <input type="radio" name="radiogroup" value="7">
   Antwort 8 <input type="radio" name="radiogroup" value="8">
<br><br>
Frage 2
   Antwort 1 <input type="radio" name="radiogroup2" value="1">
   Antwort 2 <input type="radio" name="radiogroup2" value="2">
   Antwort 3 <input type="radio" name="radiogroup2" value="3">
   Antwort 4 <input type="radio" name="radiogroup2" value="4">
<input type="submit" name="ab" value="ab dafür">
</form>
```


----------



## Bone Gasher (21. Juni 2006)

recht herzlichen Danke auch... diese Variante hat geklappt!


----------

