Tino: Formular nicht durch "Enter" sondern nur durch Button abschicken

hallo

ich habe ein längeres formular. leider kommt es gelegendlich vor, dass die benutzer enter drücken bevor alles ausgefüllt ist und das formular so abgeschickt wird.

kann ich nicht irgendwie einstellen, dass ein absenden der daten nur über den button am ende des formulars möglich ist und nicht per enter?

thx schonmal

  1. Hi,

    ich habe ein längeres formular. leider kommt es gelegendlich vor, dass die benutzer enter drücken bevor alles ausgefüllt ist und das formular so abgeschickt wird.

    tja, dass kann vorkommen. Aber sie können auch "runterscrollen" (falls dies der fall sein sollte) und trotz unvollständig ausgefülltem Formular dieses abschicken!

    kann ich nicht irgendwie einstellen, dass ein absenden der daten nur über den button am ende des formulars möglich ist und nicht per enter?

    nein, aber du kannst die eingegebenen Daten "validieren", d.h., z.B. (per JavaScript) überprüfen, ob alle Felder ausgefüllt sind.

    WauWau

    --
    Wau - hier ist mein Selfcode:
    ss:) zu:) ls:< fo:~ de:] va:) ch:° n4:# rl:( br:< js:| ie:% fl:| mo:|
    [mein alter sah optisch irgendwie besser aus ;-)]
    1. Aber sie können auch "runterscrollen" (falls dies der fall sein sollte) und trotz unvollständig ausgefülltem Formular dieses abschicken!

      naja dass wäre dann nicht ungeschickt, sondern dumm :-)

      nein, aber du kannst die eingegebenen Daten "validieren", d.h., z.B. (per JavaScript) überprüfen, ob alle Felder ausgefüllt sind.

      bin faul und hatte gehofft es gibt ne schnelle lösung - dann muss wohl doch eine überprüfung rein.

      thx

      1. Hi,

        Aber sie können auch "runterscrollen" (falls dies der fall sein sollte) und trotz unvollständig ausgefülltem Formular dieses abschicken!

        naja dass wäre dann nicht ungeschickt, sondern dumm :-)

        Wieso soll das dumm sein? Ich weiß ja nicht, was das für ein Formular ist, was du da hast, aber wenn der Surfer keine Interresse daran hat, das gesamte Formular auszufüllen, dies aber benötigt wird, musst du dies eben überprüfen - und zwar entweder clientseitig per JavaScript oder serverseitig per PHP.

        nein, aber du kannst die eingegebenen Daten "validieren", d.h., z.B. (per JavaScript) überprüfen, ob alle Felder ausgefüllt sind.
        bin faul und hatte gehofft es gibt ne schnelle lösung - dann muss wohl doch eine überprüfung rein.

        Weißt du, du kommst hier mir einer ___völlig___ falschen Einstellung daher. Du kannst nicht erwarten, dass du hier eine Frage stellst, und wir liefern dir hier einen fertigen Code!!!

        Falls du nicht weißt, wie du ansetzen sollst, lese dir das durch: http://www.selfhtml.teamone.de/javascript/beispiele/formulareingaben.htm.

        WauWau

        --
        Wau - hier ist mein Selfcode:
        ss:) zu:) ls:< fo:~ de:] va:) ch:° n4:# rl:( br:< js:| ie:% fl:| mo:|
        [mein alter sah optisch irgendwie besser aus ;-)]
        1. Tach,

          Wieso soll das dumm sein? Ich weiß ja nicht, was das für ein Formular ist, was du da hast, aber wenn der Surfer keine Interresse daran hat, das gesamte Formular auszufüllen, dies aber benötigt wird, musst du dies eben überprüfen - und zwar entweder clientseitig per JavaScript oder serverseitig per PHP.

          da man sich auf Angaben des Clients *nie* verlassen kann, müssen Angaben immer serverseitig geprüft. Man kann zusätzlich auch per Javascript prüfen aber eben nicht nur.

          mfg
          Woodfighter

          --
          Mr. Pink: Why can't we choose our own names?
          Joe: No, I tried it before & it didn't work! I had four guys fighting over Mr. Black!
          1. Hi,

            Wieso soll das dumm sein? Ich weiß ja nicht, was das für ein Formular ist, was du da hast, aber wenn der Surfer keine Interresse daran hat, das gesamte Formular auszufüllen, dies aber benötigt wird, musst du dies eben überprüfen - und zwar entweder clientseitig per JavaScript oder serverseitig per PHP.

            da man sich auf Angaben des Clients *nie* verlassen kann, müssen Angaben immer serverseitig geprüft. Man kann zusätzlich auch per Javascript prüfen aber eben nicht nur.

            genau weil ich gerade auch den Gedanken hatte, habe ich es dazugeschrieben. Ich empfehle eben auch eine serverseitige Validierung, es ist oftmals sogar von dem Arbeitsaufwand leichter als sich da was für eine formular zu schreiben, was alle elemente durchgeht...

            Ansonsten gehe ich davon aus, dass ein clientseitiger Script für nicht-serverseitige-sprachen-versierte auf jeden fall einfacher ist, zumal man auch nicht unbedingt davon ausgehen darf, dass Tino hierbei auf den serverseitigen Script einfluss hat, damit meine ich, es könnte z.B. auch ein bei einem kostenlosen Gästebuchhoster gespeichertes Gästebuch sein, o.ä.

            WauWau

            --
            Wau - hier ist mein Selfcode:
            ss:) zu:) ls:< fo:~ de:] va:) ch:° n4:# rl:( br:< js:| ie:% fl:| mo:|
            [mein alter sah optisch irgendwie besser aus ;-)]
            1. Tach,

              genau weil ich gerade auch den Gedanken hatte, habe ich es dazugeschrieben. Ich empfehle eben auch eine serverseitige Validierung, es ist oftmals sogar von dem Arbeitsaufwand leichter als sich da was für eine formular zu schreiben, was alle elemente durchgeht...

              dann hast du dich ungeschickt ausgedrückt: Du schriebst

              entweder clientseitig per JavaScript oder serverseitig

              und implizierst dadurch gleiche Wirksamkeit für beide Methoden. Jemand wie Tino, wird dann jedoch auf eine falsche Fährte gelockt, deshalb dachte ich, es wäre vorteilhaft, das nochmal klar zu stellen.

              mfg
              Woodfighter

              1. Hi,

                und implizierst dadurch gleiche Wirksamkeit für beide Methoden. Jemand wie Tino, wird dann jedoch auf eine falsche Fährte gelockt, deshalb dachte ich, es wäre vorteilhaft, das nochmal klar zu stellen.

                Also ein "ausgereifter" Daten-validator clientseitig sowie serverseitig ist schwachsinn - deswegen, wenn einem die möglichkeit der serverseitigen validierung zur verfügung steht, dann aber los - ansonsten eben clientseitig.

                WauWau

                --
                Wau - hier ist mein Selfcode:
                ss:) zu:) ls:< fo:~ de:] va:) ch:° n4:# rl:( br:< js:| ie:% fl:| mo:|
                [mein alter sah optisch irgendwie besser aus ;-)]
                1. Hallo WauWau

                  Also ein "ausgereifter" Daten-validator clientseitig sowie serverseitig ist schwachsinn - deswegen, wenn einem die möglichkeit der serverseitigen validierung zur verfügung steht, dann aber los - ansonsten eben clientseitig.

                  eine "ausgereifte" Validierung serverseitig ist unverzichtbar :-)
                  eine "ausgereifte" Validierung clientseitig Dienst am User, spart im Einsatzfall Traffic und mindert die Serverbelastung

                  Die Logik der Validierung ist in beiden Fällen die gleiche, d.h. Du musst den Prüfalgorithmus nur einmal entwickeln, somit fällt nur die Implementierung in zwei verschiedenen Sprachen an.

                  Aus diesen Gründen ist es keineswegs schwachsinnig, die Eingaben server- und clientseitig zu überprüfen, sondern sehr sinnvoll.

                  Freundliche Grüsse,

                  Vinzenz

                  1. Hallo Vinzenz,

                    eine "ausgereifte" Validierung serverseitig ist unverzichtbar :-)

                    eigentlich schon - kommt drauf an, was alles validiert werden muss.

                    eine "ausgereifte" Validierung clientseitig Dienst am User, spart im Einsatzfall Traffic und mindert die Serverbelastung

                    daran habe ich nicht gedacht - vor allem an "traffic" denke ich doch nicht ;-)

                    Die Logik der Validierung ist in beiden Fällen die gleiche, d.h. Du musst den Prüfalgorithmus nur einmal entwickeln, somit fällt nur die Implementierung in zwei verschiedenen Sprachen an.

                    idR. entwickele ich den "Prüfalgorithmus" immer spezifisch für eine Sprache. Außerdem ist es nicht "ganz gleich" auf serverseitiger contra clientseitiger validierung. So arbeitest du bei der clientseitigen mit einer popligen funktion, die "true" oder "false" zurückgeben muss (dazu noch ein paar werte überprüfen, notfalls ein paar alerts und focuse ausgeben, fertig) - währenddessen die serverseitige richtige fehlermeldungen produzieren muss sowie die Daten richtig verarbeitet in die formularfelder schreiben (sollte).

                    Aus diesen Gründen ist es keineswegs schwachsinnig, die Eingaben server- und clientseitig zu überprüfen, sondern sehr sinnvoll.

                    genau, wenn man nämlich an serverauslastung und traffic denkt.

                    WauWau

                    --
                    Wau - hier ist mein Selfcode:
                    ss:) zu:) ls:< fo:~ de:] va:) ch:° n4:# rl:( br:< js:| ie:% fl:| mo:|
                    [mein alter sah optisch irgendwie besser aus ;-)]
                    1. Tach,

                      eine "ausgereifte" Validierung serverseitig ist unverzichtbar :-)

                      eigentlich schon - kommt drauf an, was alles validiert werden muss.

                      man kann auf fast alle Angaben zumindest eine Grundlegende Plausibilitätsprüfung machen.

                      eine "ausgereifte" Validierung clientseitig Dienst am User, spart im Einsatzfall Traffic und mindert die Serverbelastung

                      daran habe ich nicht gedacht - vor allem an "traffic" denke ich doch nicht ;-)

                      Aber nur weil du ihn scheinbar nicht selber zahlen mußt (oder nur indirekt).

                      idR. entwickele ich den "Prüfalgorithmus" immer spezifisch für eine Sprache.

                      Dann machst du etwas falsch. Im Allgemeinen werden die Prüfungen mit RegExp gemachtt, diese zu erdenken ist der komplizierte Schritt; das Umsetzen in JavaScript, Perl, ... ist danach eine Kleinigkeit. Dann kann man auch ein und denselben Prüfalgorithmus an den verschiedensten Stellen einsetzen.

                      Außerdem ist es nicht "ganz gleich" auf serverseitiger contra clientseitiger validierung. So arbeitest du bei der clientseitigen mit einer popligen funktion, die "true" oder "false" zurückgeben muss (dazu noch ein paar werte überprüfen, notfalls ein paar alerts und focuse ausgeben, fertig) - währenddessen die serverseitige richtige fehlermeldungen produzieren muss sowie die Daten richtig verarbeitet in die formularfelder schreiben (sollte).

                      Ich verstehe nicht, wo du den Unterschied siehst. Die Prüfung ist auf beiden Seiten die selbe und auch die Rückgabe ändert sich nicht großartig: In einem Fall schreibe ich eine Fehlermeldung per document.write oder alert() in die HTML-Datei und im anderen Fall schreibe ich Fehlermeldungen in die HTML-Datei die danach wieder ausgeliefert wird.

                      Aus diesen Gründen ist es keineswegs schwachsinnig, die Eingaben server- und clientseitig zu überprüfen, sondern sehr sinnvoll.

                      genau, wenn man nämlich an serverauslastung und traffic denkt.

                      und an Usability: Jeder Server ist mal langsam oder meine Internetanbindung oder... und dann bin ich froh, wenn ich nicht nach einer fehlerhaften Eingabe xx Sekunden warten muß, bis die Seite erneut geladen wird, sondern das Prüfungsergebnis direkt per JavaScript übermittelt wird.

                      mfg
                      Woodfighter

                      1. Hi,

                        eine "ausgereifte" Validierung serverseitig ist unverzichtbar :-) eigentlich schon - kommt drauf an, was alles validiert werden muss. man kann auf fast alle Angaben zumindest eine Grundlegende Plausibilitätsprüfung machen.

                        Genau das habe ich gemeint: Zum beispiel HTML maskieren usw. - wird in den meisten fällen gewünscht (gästebuch, formmailer, blablabla)

                        eine "ausgereifte" Validierung clientseitig Dienst am User, spart im Einsatzfall Traffic und mindert die Serverbelastung daran habe ich nicht gedacht - vor allem an "traffic" denke ich doch nicht ;-) Aber nur weil du ihn scheinbar nicht selber zahlen mußt (oder nur indirekt).

                        richtig - das ergibt sich doch aus dem von mir gesagten von selbst ;-)

                        idR. entwickele ich den "Prüfalgorithmus" immer spezifisch für eine Sprache.

                        Dann machst du etwas falsch.

                        Nö - funktioniert immer wunderbar -- wie toll ich doch bin scnr ;-)

                        Im Allgemeinen werden die Prüfungen mit RegExp gemachtt, diese zu erdenken ist der komplizierte Schritt; das Umsetzen in JavaScript, Perl, ... ist danach eine Kleinigkeit. Dann kann man auch ein und denselben Prüfalgorithmus an den verschiedensten Stellen einsetzen.

                        Hm - ja und nein: Wenn ich z.B. schauen will, ob in dem Feld was steht, verwende ich in z.B PHP empty(), in JavaScript jedoch eben nur blabla == "" oder ganz was anderes.

                        Oder Email-adressen: bei der clientseitigen validierung schaue ich lediglich nach einem @. Bei der serverseitigen stehen mir dann mehr funktionen zur verfügung, da ich hier richtig gemütlich mit dicken fetten perl regular expressions rumhantieren kann. Die JavaScript "Regulären Ausdrücke" sind afaik nicht so gut wie die Perl-dinger.

                        Ich verstehe nicht, wo du den Unterschied siehst. Die Prüfung ist auf beiden Seiten die selbe und auch die Rückgabe ändert sich nicht großartig: In einem Fall schreibe ich eine Fehlermeldung per document.write oder alert() in die HTML-Datei und im anderen Fall schreibe ich Fehlermeldungen in die HTML-Datei die danach wieder ausgeliefert wird.

                        kann ich dir überhaupt nicht zustimmen. Bespiel: Hier validiere ich Daten clientseitig:

                        function chkFormular() {  if(document.Formular.name.value == "")  {    alert("Der Name muss angegeben werden !\n\n(c) by bla 2002");    document.Formular.name.focus();    return false;   }  if(document.Formular.email.value == "") {    alert("Die E-Mail-Adresse muss angegeben werden !\n\n(c) by bla 2002");    document.Formular.email.focus();    return false;   }  if(document.Formular.email.value.indexOf('@') == -1) {    alert("Die angegebene E-Mail-Adresse ist keine E-Mail Adresse \n\n(c) by bla 2002");    document.Formular.email.focus();    return false;   } }

                        Wie du siehst schon etwas älter (2002, keine ahnung weswegen ich diese unsinnigen copyrightvermerke in die alerts geschrieben habe.... Naja, der Code ist auch egal, ich denke, jeder weiß wie eine clientseitige validierung abläuft. Doch meine Serverseitige (anderes projekt) sieht z.B. ganz anders aus:

                        ..... <?   /* Datenvalidierung */

                        $absender = (isset($_POST["absender"]) ? goodtext($_POST["absender"]) : false);   $email    = (isset($_POST["email"]) ? goodtext($_POST["email"]) : false);   $betreff  = (isset($_POST["betreff"]) ? goodtext($_POST["betreff"]) : false);   $text     = (isset($_POST["text"]) ? goodtext($_POST["text"]) : false);

                        function goodtext($str) { // Zur Ausgabe in den input&textarea's     $str = trim(stripslashes($str));     return htmlspecialchars($str, ENT_QUOTES); }

                        function GoodForEmail($str) { // Für die HTML-Mail     $str = nl2br($str);         // $str ist bereits durch goodtext() gegangen!     return str_replace ("  ", "  ", $str); }

                        $nicht_angegeben = "<i>nicht angegeben</i>";   $absender_error = false; $email_error = false; $betreff_error = false; $text_error = false;   $ErrorOut = ""; // Ausgabe aller Fehler

                        if(!$absender) {     my_error("Bitte geben sie ihren Namen ein.");     $absender_error = true; }   if(!$email) {     $email = $nicht_angegeben;     $email_error = true; }   if(!$betreff) {     $betreff = $nicht_angegeben;     $betreff_error = true; }   if(!$text) {     my_error("Bitte geben sie eine Nachricht ein.");     $text_error = true; }

                        if($email && $email != "optional") {    if(!check_email($email)) {      my_info("Die eingegebene E-Mail-Adresse ist ungültig.");      $email_error = true; $anyerror = true; }   } else    $email = $nicht_angegeben;

                        function check_email($email) {     /* Mein Dank hierbei an Christian Kruse: Ich hatte keine Lust,        mit selbst was zusammenzubasteln. Tada:        http://aktuell.de.selfhtml.org/tippstricks/programmiertechnik/email/index.html        :-) /     // RegEx begin     $nonascii      = "\x80-\xff"; # Non-ASCII-Chars are not allowed     $nqtext        = "[^\\$nonascii\015\012"]";     $qchar         = "\\[^$nonascii]";     $protocol      = '(?:mailto:)';     $normuser      = '[a-zA-Z0-9][a-zA-Z0-9_.-]';     $quotedstring  = ""(?:$nqtext|$qchar)+"";     $user_part     = "(?:$normuser|$quotedstring)";     $dom_mainpart  = '[a-zA-Z0-9][a-zA-Z0-9.-]*\.';     $dom_subpart   = '(?:[a-zA-Z0-9][a-zA-Z0-9.-]\.)';     $dom_tldpart   = '[a-zA-Z]{2,5}';     $domain_part   = "$dom_subpart$dom_mainpart$dom_tldpart";     $regex         = "$protocol?$user_part@$domain_part";     // RegEx end     return preg_match("/^$regex$/",$email); }

                        function my_error($text) {     global $ErrorOut;     $ErrorOut .= '<table class="error">';     $ErrorOut .= '<tr><td><img src="http://www.egal/src/kontakt.fehler.gif" title="Fehler" /></td><th>';     $ErrorOut .= '<h1>Fehler:</h1>'.$text;     $ErrorOut .= '</th></tr></table>'; }

                        function my_info($text) {     global $ErrorOut;     $ErrorOut .= '<table class="error">';     $ErrorOut .= '<tr><td><img src="http://www.egal.de/src/kontakt.hinweis.gif" title="Hinweis" /></td><th>';     $ErrorOut .= '<h1>Hinweis:</h1>'.$text;     $ErrorOut .= '</th></tr></table>'; }

                        function chk_optional($text) {     global $nicht_angegeben;     if($text == $nicht_angegeben)       return "optional";     else       return $text;   }

                        if(!empty($ErrorOut))    print "Kontakt - Fehler";   else    print "Nachricht erfolgreich abgeschickt"; ?></td> </tr> <tr>   <td class="navigation">     </div> <!--      LAAANGE navigation -->     </div>   </td>   <td class="site"> <?   if(!empty($ErrorOut)):     print $ErrorOut; ?>     <p>Bitte korrigieren sie die Fehler, die das System erkannt hat, und klicken sie anschließend auf <i>Abschicken</i>.</p>     <form action="kontakt.php" method="post">     <table id="kontakt">     <?=($absender_error ? '<tr class="error">' : '<tr>'); ?>       <th>Name:</th>       <td><input name="absender" type="text" class="text" value="<?=$absender; ?>" /></td>     </tr>     <?=($email_error ? '<tr class="error">' : '<tr>'); ?>       <th>E-Mail:</th>       <td><input name="email" type="text" class="<?=(chk_optional($email)=='optional' ? "optional" : "text"); ?>" value="<?=chk_optional($email); ?>"       onfocus="if(this.value=='optional'){this.value='';this.style.color='#000'}" onblur="if(this.value==''){this.value='optional';this.style.color='#7090C0';}" /></td>     </tr>     <?=($betreff_error ? '<tr class="error">' : '<tr>'); ?>       <th>Betreff:</th>       <td><input name="betreff" type="text" class="<?=(chk_optional($betreff)=='optional' ? "optional" : "text"); ?>" value="<?=chk_optional($betreff); ?>"       onfocus="if(this.value=='optional'){this.value='';this.style.color='#000'}" onblur="if(this.value==''){this.value='optional';this.style.color='#7090C0';}" /></td>     </tr>     <?=($text_error ? '<tr class="error">' : '<tr>'); ?>       <th>Nachricht:</th>       <td><textarea name="text"><?=$text; ?></textarea></td>     </tr>     <tr>       <th> </th>       <td><input type="submit" class="button" value="Abschicken" /> <input type="reset" class="button" value="Korrekturen zurücksetzten" /></td>     </tr>     </table>     </form> <?   else:      print '<p>Ihre Nachricht wurde erfolgreich versendet.</p>';

                        $email_text  = '<html><head><title>bla</title></head><body><h1>Homepage-Kontaktierung</h1>';      $email_text .= '<hr><p>Diese E-Mail wurde automatisch generiert. Bitte <u>nicht</u> mit der Antwort-Funktion deines E-Mail-Programms antworten! Sofern die Person ihre E-Mail-Adresse angegeben hat, kannst du auf diese klicken und der Person damit eine E-Mail schreiben.</p><hr>';      $email_text .= '<table><tr><th>Absender-Name:</th><td>'.GoodForEmail($absender).'</td></tr>';      if($email != $nicht_angegeben) {        $email = '<a href="mailto:'.$email.'">'.$email.'</a>'; }      $email_text .= '<tr><th>E-Mail-Adresse:</th><td>'.$email.'</td></tr>';      if($betreff == "optional" || $betreff == $nicht_angegeben)        $betreff = $nicht_angegeben;      else $betreff = GoodForEmail($betreff);      $email_text .= '<tr><th>Betreff:</th><td>'.$betreff.'</td></tr>';      $email_text .= '<tr><th>Text:</th><td>'.GoodForEmail($text).'</td></tr></table>';

                        $header  = "From: webmaster@wgal.de";      $header .= "Content-Type: text/html";      if($betreff == $nicht_angegeben)        $betreff = "[Homepage-Mailer] Kontaktaufnahme";      else        $betreff = "[Homepage-Mailer] ".$betreff;

                        mail("post@egal.de", $betreff, $email_text, $header);

                        endif; ?>   </td> </tr> <tr class="foot">  <!-- fußnavigation --> </tr> </table> ...

                        Dieses doch etwas komplexere Beispiel stammt aus einem Projekt für eine andere Person [falls ich irgendwo vergessen habe, richtige-domain durch egal.de zu erstezten, sorry ;-)]. Und dann sage mir noch mal, ich hätte hier die grundlegend gleiche struktur....

                        und an Usability: Jeder Server ist mal langsam oder meine Internetanbindung oder... und dann bin ich froh, wenn ich nicht nach einer fehlerhaften Eingabe xx Sekunden warten muß, bis die Seite erneut geladen wird, sondern das Prüfungsergebnis direkt per JavaScript übermittelt wird.

                        Hm - sag' dass mal CK - der könnte hier in das Formular mal einen netten script einbauen. Dann noch die schwachsinnigen "Ihr posting ist unsauber und unlesbar"-dinger weg (meist verändere ich als trotz dazu noch mal den titel - und lasse mein posting wie es ist g)

                        WauWau

                        --
                        Wau - hier ist mein Selfcode: ss:) zu:) ls:< fo:~ de:] va:) ch:° n4:# rl:( br:< js:| ie:% fl:| mo:| [mein alter sah optisch irgendwie besser aus ;-)]
                        1. hi,

                          Hm - ja und nein: Wenn ich z.B. schauen will, ob in dem Feld was steht, verwende ich in z.B PHP empty(), in JavaScript jedoch eben nur blabla == "" oder ganz was anderes.

                          es ist aber trotzdem _prinzipiell_ die gleiche abfrage - nur setzt du sie je nach verwendeter programmier-/scriptsprache halt ein wenig anders um.
                          das konzept der überprüfung ist und bleibt aber das gleiche.

                          Oder Email-adressen: bei der clientseitigen validierung schaue ich lediglich nach einem @. Bei der serverseitigen stehen mir dann mehr funktionen zur verfügung, da ich hier richtig gemütlich mit dicken fetten perl regular expressions rumhantieren kann.

                          also gebe ich zuerst eine fehlerhafte emailadresse ein, dein javascript warnt mich.
                          ich bessere nach, die meldung kommt nicht mehr, das formular wird abgeschickt - freude!

                          und dann würgst du mir nach serverseitig erfolgter prüfung auf der folgeseite doch wieder einen rein, dass meine angegebene emailadresse fehlerhaft sein soll ...?
                          da käme ich mir aber leicht verarscht vor ...

                          gruss,
                          wahsaga

                          1. Hi,

                            es ist aber trotzdem _prinzipiell_ die gleiche abfrage - nur setzt du sie je nach verwendeter programmier-/scriptsprache halt ein wenig anders um.
                            das konzept der überprüfung ist und bleibt aber das gleiche.

                            Hmm - ich habe dir doch das meterlange Serverseitige Beispiel gegeben - und ich finde, auch wenn man es von jeglichem HTML isoliert und "abschlachtet" arbeitet es im Groben ganz anders. Klar, es lässt sich vielleicht nicht vergleichen, da es zwei völlig unterschiedliche projekte sind, aber z.B. so grundlegende Validierungen wie Feld auf ausgefülltheit hin überprüfen oder email-adresse checken sehen in beiden varianten völlig unterschiedlich aus...  - und nicht das gleiche konzept.

                            also gebe ich zuerst eine fehlerhafte emailadresse ein, dein javascript warnt mich.
                            ich bessere nach, die meldung kommt nicht mehr, das formular wird abgeschickt - freude!

                            Also ungefähr so was:

                            Input email: ? "fehlerhafte"
                             alert: ! "Email Wrong"
                             Input email [got focus]: ? "neue@"

                            hmm - bei meinem süßen javascript wurde lediglich auf die existenz eines @ geprüft. Hier stellt sich jedoch letztenendes die Frage, ob der Surfer eine valide, und zwar seine richtige, nicht in seinem eigenen Sinne eingeben möchte?
                            Denn wenn er nur dem System schaden will, halte ich es für gerechtfertigt, dass ihn das serverseitige System daran aufhält.

                            Sent form with: "email=neue@"
                             ...

                            und dann würgst du mir nach serverseitig erfolgter prüfung auf der folgeseite doch wieder einen rein, dass meine angegebene emailadresse fehlerhaft sein soll ...?

                            Got HTML: ! "Email-Adress wrong!"
                             email: ? "neue@neun.eu"
                             Got HTML: ! "Thank you"

                            Hier ist ja wohl klar, dass der Anwender das System aus Absicht nicht korrekt behandelt, und dann soll er sich vorkommen wie er will, hauptsache er merkt, dass er das System nicht überlisten kann.

                            da käme ich mir aber leicht verarscht vor ...

                            # Nehmen wir mal an, der User will dem System _nicht_ schaden,
                             # sondern rafft es net (er kann ja dumm sein)
                             # ...
                             Input email: ? "meineqwww.meinehomepage"
                             alert: ! "Email Wrong"
                             Input email [got focus]: ? "meine@www.meinehomepage"
                             Sent form with "email=meine@www.meinehomepage"
                             # wobei er hierbei das .de für was valides vergessen hat
                             Got HTML: ! "Bitte geben sie eine gültige E-Mail-Adresse ein"
                             email: ? "meine@www.meinehomepage.de"
                             sent form with "email=meine@www.meinehomepage.de"
                             got HTML: ! "Thank you"

                            Wie schön. Ich weiß nicht, wieso ich irritiert sein sollte. Doch eigentlich wäre ich irritiert. Aber ich hätte dem irritierten Benutzer auch nicht ein clientseitig/serverseitig-gemenge bereitgestellt, sondern ein ordentliches serverseitiges validierungssystem gestellt, etwa so, wie in [pref:t=74896&m=432195] geschrieben.

                            Oder willst du von mir erwarten, dass ich etwa so was:

                            $nonascii      = "\x80-\xff"; # Non-ASCII-Chars are not allowed
                                $nqtext        = "[^\\$nonascii\015\012"]";
                                $qchar         = "\\[^$nonascii]";
                                $protocol      = '(?:mailto:)';
                                $normuser      = '[a-zA-Z0-9][a-zA-Z0-9_.-]*';
                                $quotedstring  = ""(?:$nqtext|$qchar)+"";
                                $user_part     = "(?:$normuser|$quotedstring)";
                                $dom_mainpart  = '[a-zA-Z0-9][a-zA-Z0-9._-]*\.';
                                $dom_subpart   = '(?:[a-zA-Z0-9][a-zA-Z0-9._-]*\.)*';
                                $dom_tldpart   = '[a-zA-Z]{2,5}';
                                $domain_part   = "$dom_subpart$dom_mainpart$dom_tldpart";
                                $regex         = "$protocol?$user_part@$domain_part";
                                // RegEx end
                                return preg_match("/^$regex$/",$email);

                            versuche, auf JavaScript-Syntax umzubauen (was afaik nicht möglich ist), nur damit der user sich nicht wundert?

                            WauWau

                            --
                            Wau - hier ist mein Selfcode:
                            ss:) zu:) ls:< fo:~ de:] va:) ch:° n4:# rl:( br:< js:| ie:% fl:| mo:|
                            [mein alter sah optisch irgendwie besser aus ;-)]
                2. Tach,

                  Also ein "ausgereifter" Daten-validator clientseitig sowie serverseitig ist schwachsinn - deswegen, wenn einem die möglichkeit der serverseitigen validierung zur verfügung steht, dann aber los - ansonsten eben clientseitig.

                  wenn ich nur eine clientseite Validierung nutzen kann, dann kann ich es auch gleich lassen. Die übermittelten Daten müssen dann sowieso von Hand überprüft werden, da ich mich nicht auf eine Überprüng verlassen kann, die so einfach zum umgehen ist. Wenn eine Überprüfung von Hand nicht notwendig ist, dann ist die Überprüfung insgesammt so unwichtig, daß man sie komplett weglassen kann. Also ist eine Überprüfung per JavaScript immer nur als Ergänzung zu einer serverseitigen sinnvoll.

                  mfg
                  Woodfighter

                  1. Hi,

                    Also ein "ausgereifter" Daten-validator clientseitig sowie serverseitig ist schwachsinn - deswegen, wenn einem die möglichkeit der serverseitigen validierung zur verfügung steht, dann aber los - ansonsten eben clientseitig.

                    wenn ich nur eine clientseite Validierung nutzen kann, dann kann ich es auch gleich lassen. Die übermittelten Daten müssen dann sowieso von Hand überprüft werden, da ich mich nicht auf eine Überprüng verlassen kann, die so einfach zum umgehen ist. Wenn eine Überprüfung von Hand nicht notwendig ist, dann ist die Überprüfung insgesammt so unwichtig, daß man sie komplett weglassen kann. Also ist eine Überprüfung per JavaScript immer nur als Ergänzung zu einer serverseitigen sinnvoll.

                    richtig, eigentlich kann man es clientenseitig ganz lassen. Eine klientseitige Validierung kann lediglich zur Trafficeinsparung genutzt werden, und zum "nochmalerinnern" des Benutzers, er soll die Daten bitte eingeben. Das clientseitig extrem leicht zu umgehen ist, ist sowieso klar - dazu braucht man nicht einmal wissen von JavaScript zu haben, einfach Forumlar Copy'n'Paste, bisschen modifizieren und fertig.

                    WauWau

                    --
                    Wau - hier ist mein Selfcode:
                    ss:) zu:) ls:< fo:~ de:] va:) ch:° n4:# rl:( br:< js:| ie:% fl:| mo:|
                    [mein alter sah optisch irgendwie besser aus ;-)]
  2. hi,

    ich habe ein längeres formular. leider kommt es gelegendlich vor, dass die benutzer enter drücken bevor alles ausgefüllt ist und das formular so abgeschickt wird.

    warum wollen so viele seitenersteller "dumme" benutzer immer vor sich selber schützen?
    ein paar mal diesen fehler machen lassen, serverseitig generierte fehlermeldung - und auf das einsetzen des _lerneffektes_ warten. andernfalls sterben die DAUs nie aus ...

    kann ich nicht irgendwie einstellen, dass ein absenden der daten nur über den button am ende des formulars möglich ist und nicht per enter?

    globale javascript-variable mit dem wert false vorbelegen,
    onSubmit mit return den wert eben dieser variablen zurückgeben lassen (verhindert das abschicken, falls wert false ist),
    und am submit-button per onClick den wert dieser globalen variablen auf true setzen,
    fertisch.

    gruss,
    wahsaga