Javascript automatisierte Formular/Radiobutton-Abfrage

redshefox

Grünschnabel
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:
Code:
<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
 
Hallo ...
also ich habe bei mir das mal ausprobiert, ganz geht es noch nicht aber
Code:
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 ;-)
 
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
 
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
 
Hallo redshefox,

PHP:
<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
 
Guten Tag zusammen,

mich würde gerne interessieren, wie man dieses Script

PHP:
<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é
 
Code:
    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 :confused:
 
Ich meinte es eher so:
PHP:
<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.
 

Neue Beiträge

Zurück