Christian: Problem mit JA/NEIN Sicherheitsabfrage im Formular

Hallo! Ich habe ein Bewerbungsformular, welches vor dem Abschicken noch die Einträge überprüft mithilfe von Javascript. Nur leider scheint das nicht ganz bei der JA/Nein-Abfrage zu funktionieren und ich weiß nicht wieso. Das Formular darf erst dann verschickt werden, wenn der Radio-Button auf JA gestellt ist. Wenn NEIN angeklickt ist wird es mit den anderen fehlenden Eingaben im PopUp amit aufgelistet. Wo liegt mein Fehler? Kann mir jemand weiterhelfen? Danke!

Hier der Quelltext. Abfrage und Radio-Buttons sind durch Kommentare gekennzeichnet!

<html> <head> <title>Jobformular</title> <script type="text/javascript"> <!-- function kontrolle() {  var vollstaendig = "";

var missing = "Folgende Daten fehlen:\n";  if(document.Jobformular.vname.value == "") missing += "- Vorname\n";  if(document.Jobformular.name.value == "") missing += "- Name\n";  if(document.Jobformular.strasse.value == "") missing += "- Strasse\n";  if(document.Jobformular.plz.value == "") missing += "- PLZ u Ort\n";  if(document.Jobformular.tel.value == "") missing += "- Telefon\n";  if(document.Jobformular.gebdatum.value == "") missing += "- Geburtsdatum\n";  if(document.Jobformular.land.value == "") missing += "- Land\n";  if(document.Jobformular.ausbildung.value == "") missing += "- Ausbildung\n";  if(document.Jobformular.erfahrung.value == "") missing += "- Erfahrung\n";  if(document.Jobformular.auszeichnung.value == "") missing += "- Auszeichnungen\n";  if(document.Jobformular.erwartung.value == "") missing += "- Erwartungen\n"; <!-- hier kommt die JA/NEIN-Abfrage _____________________________________________ -->  if(document.Jobformular.verstanden.value == "nein") missing += "- Einverstaendnis\n"; <!-- ____________________________________________________________________________ -->

if(missing != "Folgende Daten fehlen:\n") {   alert(missing);   vollstaendig += "nein";  }

if(vollstaendig.indexOf('nein') == -1) {   document.Jobformular.submit();  } } //--> </script> </head> <body>    <form action="jobform.php" method="post" name="Jobformular"> <table width="608" border="1" cellspacing="4" cellpadding="0" align="center" bordercolor="#000000">   <tr>     <td>       <table width="600" border="0" cellpadding="2" cellspacing="2" class="inhalt_weiss">         <tr>           <td width="105" class="inhalt_weiss" valign="top"><b>Bewerbung als:</b></td>           <td colspan="2">             <table width="100%" border="0" cellspacing="0" cellpadding="3">               <tr>                 <td width="13%" class="inhalt_blau"> </td>                 <td class="inhalt_blau">                   <input type="text" name="arbeit" size="60">                 </td>               </tr>             </table>           </td>         </tr>         <tr>           <td colspan="3" height="2" class="inhalt_weiss"></td>         </tr>         <tr>           <td width="105" class="inhalt_weiss" valign="top"><b>Bewerber:</b></td>           <td colspan="2">             <table width="100%" border="0" cellpadding="3" cellspacing="0">               <tr>                 <td width="13%" class="inhalt_blau">                   <div align="right">Vorname</div>                 </td>                 <td width="37%" class="inhalt_blau">                   <input name="vname" type="text" size="30">                 </td>                 <td width="13%" class="inhalt_blau">                   <div align="right">Name</div>                 </td>                 <td width="37%" class="inhalt_blau">                   <input name="name" type="text" size="30">                 </td>               </tr>               <tr>                 <td width="13%" class="inhalt_blau">                   <div align="right">Strasse/Nr</div>                 </td>                 <td width="37%" class="inhalt_blau">                   <input type="text" name="strasse" size="30">                 </td>                 <td width="13%" class="inhalt_blau">                   <div align="right">Geburtsdatum</div>                 </td>                 <td width="37%" class="inhalt_blau">                   <input name="gebdatum" type="text" size="30">                 </td>               </tr>               <tr>                 <td width="13%" class="inhalt_blau">                   <div align="right">PLZ/Ort</div>                 </td>                 <td width="37%" class="inhalt_blau">                   <input type="text" name="plz" size="30">                 </td>                 <td width="13%" class="inhalt_blau">                   <div align="right">Land</div>                 </td>                 <td width="37%" class="inhalt_blau">                   <input name="land" type="text" size="30">                 </td>               </tr>             </table>           </td>         </tr>         <tr>           <td colspan="3" height="2" class="inhalt_weiss"></td>         </tr>         <tr>           <td width="105" class="inhalt_weiss" valign="top"> <b>Kontakt:</b></td>           <td colspan="2">             <table width="100%" border="0" cellpadding="3" cellspacing="0">               <tr>                 <td width="13%" class="inhalt_blau">                   <div align="right">Email</div>                 </td>                 <td width="37%" class="inhalt_blau">                   <input type="text" name="email" size="30">                 </td>                 <td width="13%" class="inhalt_blau">                   <div align="right">Telefon</div>                 </td>                 <td width="37%" class="inhalt_blau">                   <input name="tel" type="text" size="30">                 </td>               </tr>             </table>           </td>         </tr>         <tr>           <td colspan="3" height="2" class="inhalt_weiss"></td>         </tr>         <tr>           <td width="105" class="inhalt_weiss"></td>           <td width="258" class="inhalt_blau"><b>Ausbildung und Qualifikation</b></td>           <td width="221" class="inhalt_blau"><b>Berufserfahrung</b></td>         </tr>         <tr>           <td width="105" class="inhalt_weiss"></td>           <td width="258" class="inhalt_blau">             <textarea name="ausbildung" cols="34" rows="3"></textarea>           </td>           <td width="221" class="inhalt_blau">             <textarea name="erfahrung" cols="34" rows="3"></textarea>           </td>         </tr>         <tr>           <td width="105" class="inhalt_weiss"></td>           <td width="258" class="inhalt_blau"><b> was mich auszeichnet </b></td>           <td width="221" class="inhalt_blau"><b>was ich erwarte</b></td>         </tr>         <tr>           <td width="105" class="inhalt_weiss"></td>           <td width="258" class="inhalt_blau">             <textarea name="auszeichnung" cols="34" rows="3"></textarea>           </td>           <td width="221" class="inhalt_blau">             <textarea name="erwartung" cols="34" rows="3"></textarea>           </td>         </tr>         <tr>           <td colspan="3" class="inhalt_blau"> Hiermit erkläre ich mich             einverstanden, dass meine Angaben zu Zwecken des internen Gebrauchs             von der Firma GmbH & Co. KG vorübergehend gespeichert und             verwendet werden. Die uns übermittelten Daten werden streng vertraulich             behandelt und gemäss den Vorschriften des Bundesdatenschutzgesetzes             verarbeitet. Nach Abschluss des Bewerbungsverfahrens werden Ihre Daten             gelöscht.<br> <!-- hier sind die Radio-Buttons ______________________________________ -->

<div align="right"> ja               <input type="radio" name="verstanden" value="ja" checked >               nein               <input type="radio" name="verstanden" value="nein">             </div>           </td>         </tr>         <tr>           <td colspan="3">             <table width="100%" border="0" cellpadding="0" cellspacing="0">               <tr>                 <td align="CENTER" class="inhalt_weiss">  <A HREF="javascript:document.Jobformular.reset()">               <b><font color="#000000">Einträge löschen</font></b></A>     </td>                 <td align="CENTER" class="inhalt_weiss">               <A HREF="javascript:kontrolle()"> <b><font color="#000000">Abschicken</font></b></A>      </td>               </tr>             </table>           </td>         </tr>       </table>     </td>   </tr> </table> </form> <br> </body> </html>

  1. hi,

    Hallo! Ich habe ein Bewerbungsformular, welches vor dem Abschicken noch die Einträge überprüft mithilfe von Javascript.

    dir ist hoffentlich klar, dass einfaches deaktivieren von javascript deine abfrage hinfällig macht - um eine serverseitige überprüfung der daten kommst du also nicht herum.
    javascript kann hier allenfalls komfort für den benutzer bieten, aber keine sicherheit in bezug auf das, was beim server ankommt.

    Wo liegt mein Fehler?

    du versuchst den radio-button über sein value anzusprechen - das ist aber hier unsinnig.
    sieh dir http://selfhtml.teamone.de/javascript/objekte/elements.htm#checked, dann weisst du wie es richtig geht.

    gruss,
    wahsaga

    1. Hi!

      dir ist hoffentlich klar, dass einfaches deaktivieren von javascript deine abfrage hinfällig macht - um eine serverseitige überprüfung der daten kommst du also nicht herum.
      javascript kann hier allenfalls komfort für den benutzer bieten, aber keine sicherheit in bezug auf das, was beim server ankommt.

      ja, ich weiß. Aber das macht nichts...

      du versuchst den radio-button über sein value anzusprechen - das ist aber hier unsinnig.

      jetzt wo du es sagst fällt es mir auch wieder ein... danke dir!

      Christian

  2. Hallo,

    <!-- hier kommt die JA/NEIN-Abfrage _____________________________________________ -->
     if(document.Jobformular.verstanden.value == "nein") missing += "- Einverstaendnis\n";

    Es gibt hier kein eindeutiges Element "verstanden". Es gibt ein Array document.Jobformular.verstanden[0] und document.Jobformular.verstanden[1], wobei bei jeweils einem der Array-Elemente die Eigenschaft checked gleich true ist, beim anderen false.
    if(document.Jobformular.verstanden[0].checked == false) missing += "- Einverstaendnis\n";

    <!-- ____________________________________________________________________________ -->

    ...

    //-->
    </script>
    </head>
    <body>

    ...

    <!-- hier sind die Radio-Buttons ______________________________________ -->

    <div align="right"> ja
                  <input type="radio" name="verstanden" value="ja" checked >
                  nein
                  <input type="radio" name="verstanden" value="nein">
                </div>

    ...

    Schau mal, wie Radio-Buttons hier angesprochen werden:
    http://selfhtml.teamone.de/javascript/objekte/elements.htm#checked

    viele Grüße

    Axel

    1. Ich danke dir sehr, jetzt funtioniert es alles. Bis dann mal!
      Christian