Javascript Check Formular

Diskutiere das Thema Javascript Check Formular im Forum Web-Programmierung.

  1. v4umax

    v4umax Thread Starter Mitglied

    Beiträge:
    29
    Zustimmungen:
    0
    Mitglied seit:
    07.05.2007
    Hallo Leute,

    Möchte gerne auf meiner Homepage ein Formular für Dateneingabe
    einbinden, das wiederum durch ein Java-Script überprüft wird.
    Habe folgendes htm Dokument verfasst. Die überprüfung von Ein-
    gaben im Dokument funktioniert tadellos.

    Zur ergänzung möchte ich nun, dass auch die Anrede "HERR/FRAU"
    überprüft wird. Kann mir bitte jemand helfen? Ich weis nicht
    mehr weiter!

    Code:
    <html>
    <head><title>Formulare mit Javascript</title>
    
    <script type="text/javascript">
    function checkForm() {
      var strFehler='';
      if (document.forms[0].Name.value=="")
        strFehler += "Der Name fehlt oder hat einen Fehler!\n";
      if (document.forms[0].Telefon.value=="")
        strFehler += "Die Telefonnummer fehlt oder hat einen Fehler!\n";
      if (!validEmail(document.forms[0].Email.value)) {
        strFehler += "Die E-Mail-Adresse fehlt oder hat einen Fehler!\n";
      }
        
      if (strFehler.length>0) {
        alert("Datenfehler! Festgestellte Probleme: \n\n"+strFehler);
        return(false);
      }
    }
    function validEmail(email) {
      var strReg = "^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$";
      var regex = new RegExp(strReg);
      return(regex.test(email));
    }
    </script>
    </head>
    
    <body marginwidth="0" leftmargin="0" marginheight="0" topmargin="0" bgcolor="#787878" text="#000000">
    
    <form action="formmail.php" method="POST" onsubmit='return checkForm()'>
    
    <input type="hidden" name="subject" value="verteiler">
    	
    	<input type="hidden" name="access" value="irregeheim">
        
    	B&uuml;ro
    	<br>
    	<input name="Buero" type="text" id="Buero" value="" size="20">
    	<br>
    	
    	Anrede
    	<br>
    	<input type="radio" name="Anrede" value="Herr"> Herr
    	<br>
    	<input type="radio" name="Anrede" value="Frau"> Frau
    	<br>						
    	
    	Position
    	<br>
    	<select name="Position">
    		<option> Keine Angabe </option>
    		<option> Chef(in) </option>
    		<option> Inhaber(in) </option>
    		<option> Gesch&auml;ftsf&uuml;rer(in) </option>
    		<option> Abteilungsleiter(in) </option>
    		<option> Freie(r) Mitarbeiter(in) </option>
    		<option> Andere Position </option>
    	</select>
    	<br>
    						
    	Vorname
    	<br>
    	<input name="Vorname" type="text" id="Vorname" value="" size="20">
    	<br>
    
    	Name
    	<br>
    	<input name="Name" type="text" id="Name" value="" size="20">
    	<br>
    
    	Strasse
    	<br>
    	<input name="Strasse" type="text" id="Strasse" value="" size="20">
    	<br>
    	
    	Ort
    	<br>
    	<input name="Ort" type="text" id="Ort" value="" size="20">
    	<br>
    	
    	Telefon
    	<br>
    	<input name="Telefon" type="text" id="Telefon" value="" size="20">
    	<br>
    	
    	Telefax
    	<br>
    	<input name="Telefax" type="text" id="Telefax" value="" size="20">
    	<br>
    	
    	Email
    	<br>
    	<input name="Email" type="text" id="Email" value="" size="20">
    	<br>
    	
    	Internet
    	<br>
    	<input name="Internet" type="text" id="Internet" value="" size="20">
    	<br>
          
    	Eingabe
    	<br>
    	<textarea name="Eingabe" cols="60" rows="20" wrap="PHYSICAL" id="Eingabe">
    	</textarea>
    	<br>
          
    	<br>
    	<input type="submit" value="Abschicken">
    
    </form>
    
    </body>
    </html>
    
    
     
  2. wegus

    wegus Mitglied

    Beiträge:
    16.237
    Zustimmungen:
    2.827
    Mitglied seit:
    13.09.2004
    Der Titel ist unglücklich gewählt:

    Java != Javascript

    bitte beachten!!!
     
  3. somunium

    somunium Mitglied

    Beiträge:
    523
    Zustimmungen:
    35
    Mitglied seit:
    16.01.2008
    Du kannst bei einer IF-Abfrage auch auf zwei Werte vergleichen.

    PHP:
    if("Frau" == document.forms[0].Anrede.value xor "Herr" == document.forms[0].Anrede.value)
    Die Bedingung gilt als erfüllt, wenn eine Seite vom XOR true, und die andere false ergibt.
    (Schließlich kann man sich nicht gleichzeitig mit Herr und Frau anreden lassen).

    Hier würde zwar auch ein simles 'OR' reichen, da beides mal dass gleiche Feld überprüft wird, aber wenn sich da mal was ändert, hat man ein Zeichen wenig, was man ersetzen muss :D
    (Beim 'or' reicht es, dass eine Seite 'true' ergibt, unabhängig von der anderen).

    Mfg
    Lukas
     
  4. dms

    dms

    Moderne Browser unterstützen meines Wissens nach alle die value-Eigenschaft von Select-Objekten. Auf der sicheren Seite ist man aber wenn man die ausgewählte Option direkt anspricht.

    Code:
    document.forms[0].Anrede.options[document.forms[0].Anrede.options.selectedIndex].value
     
  5. v4umax

    v4umax Thread Starter Mitglied

    Beiträge:
    29
    Zustimmungen:
    0
    Mitglied seit:
    07.05.2007
    Funktioniert leider nicht! Das Formular wird gleich abgeschickt!
    Ohne jegliche prüfung! Hier mal mein neues Head script:

    Code:
    <script type="text/javascript">
    function checkForm() {
      var strFehler='';
      if(document.forms[0].Anrede.options[document.forms[0].Anrede.options.selectedIndex].value=="")
        strFehler += "Die Anrede fehlt oder hat einen Fehler!\n";
      if (document.forms[0].Name.value=="")
        strFehler += "Der Name fehlt oder hat einen Fehler!\n";
      if (document.forms[0].Telefon.value=="")
        strFehler += "Die Telefonnummer fehlt oder hat einen Fehler!\n";
      if (!validEmail(document.forms[0].Email.value)) {
        strFehler += "Die E-Mail-Adresse fehlt oder hat einen Fehler!\n";
      }
        
      if (strFehler.length>0) {
        alert("Datenfehler! Festgestellte Probleme: \n\n"+strFehler);
        return(false);
      }
    }
    function validEmail(email) {
      var strReg = "^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$";
      var regex = new RegExp(strReg);
      return(regex.test(email));
    }
    </script>
     
  6. v4umax

    v4umax Thread Starter Mitglied

    Beiträge:
    29
    Zustimmungen:
    0
    Mitglied seit:
    07.05.2007
    Auch folgender Angaben gehen nicht ?

    Code:
    function checkForm() {
      var strFehler='';
      if("Frau" == document.forms[0].Anrede.value xor "Herr" == document.forms[0].Anrede.value=="")
         strFehler += "Die Anrede fehlt oder hat einen Fehler!\n";
      if (document.forms[0].Name.value=="")
        strFehler += "Der Name fehlt oder hat einen Fehler!\n";
      if (document.forms[0].Telefon.value=="")
        strFehler += "Die Telefonnummer fehlt oder hat einen Fehler!\n";
      if (!validEmail(document.forms[0].Email.value)) {
        strFehler += "Die E-Mail-Adresse fehlt oder hat einen Fehler!\n";
      }
     
  7. somunium

    somunium Mitglied

    Beiträge:
    523
    Zustimmungen:
    35
    Mitglied seit:
    16.01.2008
    Jetzt musst Du noch die Informationen aus dms's und meinem Post verbinden, und dann klappts ;)
     
  8. dms

    dms

    Mit welchem Browser testest Du denn? In Opera und Firefox gibt es eine Fehlerkosole, die so gut wie immer sehr hilfreich ist beim debuggen von JavaScript.
    Auch Safari hat eine Fehlerkonsole, die Du aber erst über das Terminal aktivieren musst: http://developer.apple.com/internet/safari/faq.html#anchor14
     
  9. v4umax

    v4umax Thread Starter Mitglied

    Beiträge:
    29
    Zustimmungen:
    0
    Mitglied seit:
    07.05.2007
    Ich komm nicht auf den grünen Punkt !
    Meine Fehlerkonsole meldet noch immer:
    missing ) after condition.

    Könnt ihr mir nicht das ganze Script einmal posten ?
    Vielen lieben dank !:(
     
  10. gishmo

    gishmo Mitglied

    Beiträge:
    818
    Zustimmungen:
    26
    Mitglied seit:
    16.03.2004
    Leute, man prüft keine Daten, die gesendet werden im Client!
    Was macht Ihr, wenn der User JavaScript ausschaltet oder einen javaScript-Fehler hat?

    Valedierungen gehören auf den Server! :)
     
  11. dms

    dms

    Stimmt, das wäre ja Komfort und sowas will man dem Nutzer natürlich nicht zumuten. ;)

    Das eine schliesst das andere ja nicht aus, oder?

    @v4umax Hast Du mal einen Link parat so das man sich das online anschauen kann? Ist immer die beste Variante da die meisten keine Lust haben sich den ganzen Quellcode lokal zu speichern.
     
  12. v4umax

    v4umax Thread Starter Mitglied

    Beiträge:
    29
    Zustimmungen:
    0
    Mitglied seit:
    07.05.2007
    Anbei der Link zum bestehenden Verteiler:
    Noch immmer suche ich nach dem Problem wie ich
    die Radio-Buttons "Herr" und "Frau" mittels script checken kann?
    (In der Auswahl sollten Sie zunächst nicht vorselektiert sein!)
    siehe http://verteiler.ccpr.de
     
  13. dms

    dms

    Ach, radiobuttons. Hätte mir wohl mal das Markup anschauen sollen. *g* Bin irgendwie von select ausgegangen. Sorry für die Verwirrung.

    Beim Fall Radiobuttons sollte die Bedingung so lauten:
    Code:
    if(!document.forms[0].Anrede[0].checked && !document.forms[0].Anrede[1].checked)
     
  14. gishmo

    gishmo Mitglied

    Beiträge:
    818
    Zustimmungen:
    26
    Mitglied seit:
    16.03.2004
    @dms:
    Stimmt, das wäre ja Komfort und sowas will man dem Nutzer natürlich nicht zumuten.

    Das spielt im Normalfall keine Rolle, ob der Server valisiert oder der Client. Das Risiko von Falscheingaben ist allerdings bei einer serverseitigen Prüfung gleich null.

    @dms: Das eine schliesst das andere ja nicht aus, oder?

    Stimmt, aber ist es sinvoll auf dem Client und auf dem Server zu validieren?
     
  15. v4umax

    v4umax Thread Starter Mitglied

    Beiträge:
    29
    Zustimmungen:
    0
    Mitglied seit:
    07.05.2007
    WOW, ES FUNKTIONIERT ! ICH BIN BEGLEISTERT !

    Der Vollständigkeit halber (nur für meinen Wissenshunger)
    nun noch die Frage ....
    ... könnte man auch ein SELECT-FELD siehe
    <select name="Position"> prüfen lassen ?
     
  16. gishmo

    gishmo Mitglied

    Beiträge:
    818
    Zustimmungen:
    26
    Mitglied seit:
    16.03.2004
    Jep, geht ... gehe gleich mal auf die Suche wie ... :)
     
  17. dms

    dms

    Und wie das eine Rolle spielt. Ich als Nutzer reg mich so derbe auf wenn ich mich z.B. irgendwo anmelden will und tausend mal ein Formular abschicken muss weil jedes mal was anderes nicht passt. Einmal ist mein Passwort unsicher, dann fehlt die Telefonnummer, dann muss ich die AGB akzeptieren, dann dies, dann jenes und jedes mal muss ich auch noch mein sicheres Passwort zwei mal eingeben. Da krich ich die Krise! ;)

    Sowas ist einfach nur nutzerunfreundlich. Wenn man schon die Möglichkeit hat eine vorvalidierung auf Clientseite durchzuführen, dann spricht auch nichts dagegen. Dass man sich nicht auf diese Form der Validierung verlassen kann steht völlig ausser Frage.

    Natürlich. Einmal um, wie oben beschrieben, den Nutzer nicht zu ärgern und unnötig Bandbreite zu verzocken und ein mal um die Daten "wirklich" zu validieren.

    Darin sehe ich nun auch wirklich keine Glaubensfrage sondern das ist für mich ein Sache des guten Tons.

    Was aber noch viel schlimmer ist als eine ausschliesslich(<=nachträglich eingefügt. Sonst macht das ja keinen Sinn. ;) ) Serverseitige Validierung: Falsche Validierung. Gerade mit dem richtige Validieren von eMail-Adressen scheinen die meisten Entwickler überfordert zu sein. Fast keiner der regulären Ausdrücke die man so im Netz findet deckt die Spezifikationen des entsprechenden RFC ab. Was ist mit ich@66.249.93.104? was ist mit ich@meine-domain.museum? Aus genau so einem Grund konnte ich mich einst nicht bei 1&1 anmelden. :cake:

    @v4umax Das mit dem Select-Feld habe ich oben ja schon fälschlicherweise geschrieben. Entweder wie bei einem normalen input über value oder über selectedIndex um auch ältere Browser abzudecken. Oder falls Du den Inhalt nicht kennst oder nicht explizit prüfen willst kannst Du z.B. auch sowas machen:

    Code:
    if(SELECT.options.selectedIndex==0)
     
  18. v4umax

    v4umax Thread Starter Mitglied

    Beiträge:
    29
    Zustimmungen:
    0
    Mitglied seit:
    07.05.2007
    MAL NOCH WAS SCHNELL:
    Könnt ihr mir noch kurz das Script geben das für einen
    einzelnen Radio Button namens: "Datenschutz" gilt ?
    siehe auch aktualisierte Seite: http://verteiler.ccpr.de

    @dms
    Ja, deiner Aussage das es dich nerft stimme ich zu!
    Leider gibt es gerade in Deutschland immer mehr Gesetzte,
    die dies und das Vorschreiben! ZU DOOF....
    Und nun will mein Chef:
    A) Die wichtigsten Daten eingegegeben haben
    so dass er sich später Rückversichern kann.
    B) Die Zustimmung das alles korrekt nach BND läuft.

    Oweia, ich wär froh, wenn ein nur ein einfaches ...
    Klick -- ICH WILL SPAM -- wäre!
     
  19. wegus

    wegus Mitglied

    Beiträge:
    16.237
    Zustimmungen:
    2.827
    Mitglied seit:
    13.09.2004
    @v4umax: Da Du Deine PN's offenbar nicht liest:

    wenn Du den roten Button neben einem Beitrag anclickst schreibst Du KEINE PN an den Autor des Postings! Du meldest den Beitrag stattdessen bei den Mods!

    Deine Beiträge landen also nicht da wo Du glaubst! Du würdest mir einen Gefallen tun, wenn Du aufhörst dadurch harmlose Beiträge zu melden und den Usern würdest Du helfen wenn Du alle Fragen hier im Thread stellst und nicht per PN an User!
     
  20. v4umax

    v4umax Thread Starter Mitglied

    Beiträge:
    29
    Zustimmungen:
    0
    Mitglied seit:
    07.05.2007
    @ gishmo / dms
    Könnt ihr mir noch mit dem Formular weiter Helfen?
    Suche noch immer vergebens nach einem Script für
    einen Checkbox Button, sowie für eine Auswahl Dropdown-Liste!
    siehe auch http://verteiler.ccpr.de
    Betreffend Punkte: Datenschutz und Position



    @ wegusAbsolutes Sorry !!!!!!
    (Bin noch Neuling in Foren)
    Dachte durch das Icon kann ich direkt mit dem Autoren in Kontakt treten!
     
Die Seite wird geladen...

MacUser.de weiterempfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Akzeptieren Weitere Informationen...