Inhaltsprüfung mit alert

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Inhaltsprüfung mit alert

    Hi,

    bin neu hier im Forum. Hab nen Problem an dem ich schon ne Weile dran rum bastel, mehrmals die Suche gequält habe un irgendwie auf keinen grünen Zweig komme....
    Dazu muss ich sagen, dass ich bislang eher alles rein mit php geschrieben hab un nun langsam versuch nach und nach einzelne Bereiche durch Javascript zu vereinfachen.... in manchen klappt das auch, nur an der einen Stelle hier häng ich irgendwie:

    Gewünscht is quasi, wenn ich das Formular absende, sollen die Felder auf Inhalt geprüft werden, wenn kein Inhalt vorhanden is, eben ein Alert ausgegeben werden.
    Geprüft werden soll beim Klick auf "Buchen"...und die selbe Seite neuaufgerufen werden.

    Vielen Dank für alle Hinweise...

    Script-Part:
    Code:
      <script type="text/javascript">
      <!--
         function confirm_delete() 
         {
            return(confirm("Diesen Eintrag wirklich löschen?\nDiese Aktion kann nicht rückgängig gemacht werden!"));
         }
    
         function field_occupied(name)
         {
            var field = document.getElementByName("name");
            if(field.value == "" || field.value == null) return true;
            else                                         return false;
         }
    
         function check_eingabe() 
         {
            if(field_occupied("buchungsbetrag"))
            {
               alert("Bitte einen Buchungsbetrag angeben!");
               return false;
            }
            else if(field_occupied("buchungsdatum")) 
            {
               alert("Bitte ein Buchungsdatum angeben!");
               return false;
            }
            else if(field_occupied("buchungstext")) 
            {
               alert("Bitte einen Buchungstext angeben!");
               return false;
            }
            else if(field_occupied("kontoid")) 
            {
               alert("Bitte ein Konto angeben!");
               return false;
            }
            else if(field_occupied("katid")) 
            {
               alert("Bitte eine Kategorie angeben!");
               return false;
            }
            else
            {
               document.user_buchung.submit();
               return true;
            }
         }
    
      //-->
      </script>
    Formular-Part:
    Code:
          echo "<form name='user_buchung' onSubmit='return check_eingabe()' action='$formaction' method='post'>";
           echo "<table border='1'>";
           echo "<tr><th> &nbsp;Nr.&nbsp;             </th>
                     <th> &nbsp;KontoNr. - Bez.&nbsp; </th>
                     <th> &nbsp;Buch-Datum&nbsp;      </th>
                     <th> &nbsp;Buchungstext&nbsp;    </th>
                     <th> &nbsp;Betrag&nbsp;          </th>";
           echo "</tr>";
    
           echo "<tr>";
           echo "<td>&nbsp;</td>";
    
           // LOV für die Konten des Users
           echo "<td><select name='kontoid' size='1'>
                     <option value='0'>Bitte auswählen</option>";
    
                     $res_konto_lov = mysql_query("select KONTOID, KONTONR, KONTOBEZ from konto where userid = '$aufruf_userid' order by KONTOBEZ");
                     while ($dsatz_konto_lov=mysql_fetch_array($res_konto_lov))
                     {
                        $value = $dsatz_konto_lov['KONTOID'];
                        echo "<option value='$value'>".$dsatz_konto_lov['KONTONR']."&nbsp;&nbsp;-&nbsp;&nbsp;".$dsatz_konto_lov['KONTOBEZ']."</option>";
                     }
           echo "</select></td>";
    
           echo "<td><input name='buchungsdatum' size='10' value='$buchdatum_default'>  </td>";
           echo "<td><input name='buchungstext'>   </td>";
           echo "<td><input name='buchungsbetrag' size='8'> </td>";
           echo "</tr>";
           echo "</table>";
           echo "</form>";
           echo "<br />";
        //   echo "<input type=\"submit\" onSubmit='return check_eingabe()' value=\"SAVE\" />";
           echo "<a href='javascript:document.user_buchung.submit();'> Buchen</a>";
      //     echo "<a href='$formaction' > Buchen</a>";
           echo "<br /><br />";

    Was er macht, is quasi die Seite ohne Prüfung neu aufbauen, da ich darunter was zum testen gesetzt hab, das er macht...
    Zuletzt geändert von Normansmily; 09.09.2009, 16:36.

  • #2
    Hallo,

    die Methode heißt getElementsByName und das Argument muss name lauten (wie an die Funktion übergeben) und nicht "name", denn sonst würde das Formularfeld mit dem Namen name gesucht, was ja nicht deine Absicht ist.

    Achso, nochwas: das Attribut heißt onsubmit und ebenso der JavaScript Event Handler. Wenn du das S groß schreibst, kann es auch daran liegen.

    Gruß,

    Anja
    Zuletzt geändert von AmicaNoctis; 09.09.2009, 16:43.
    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
    Super, danke!
    [/COLOR]

    Kommentar


    • #3
      OK, das mit dem "name" warn klassischer Fehler, hatte ich vorher auch so, nur eben kurz zum testen noch versucht, da ich hier echt am verrückt werden bin.....

      Das s bei "getElementsByName" hab ich eingefügt, und das s bei "onsubmit" klein geschrieben,
      allerdings leider immernoch ohne Erfolg

      Kommentar


      • #4
        Zitat von Normansmily Beitrag anzeigen
        Das s bei "getElementsByName" hab ich eingefügt, allerdings leider immernoch ohne Erfolg
        Welchen Browser benutzt du zum Testen? Hat der eine Fehlerkonsole / einen Debugger? Was stehen dort für Fehlermeldungen? Wie sieht dein aktueller, korrigierter Code aus?
        [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
        Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
        Super, danke!
        [/COLOR]

        Kommentar


        • #5
          Browser: Firefox 3.0.13
          Debugger: keinen Installed

          Momentaner Code:
          Code:
               function field_occupied(name)
               {
                  var field = document.getElementsByName(name);
                  if(field.value == "" || field.value == null) return true;
                  else                                         return false;
               }
          Code:
                echo "<form name='user_buchung' onsubmit='return check_eingabe()' action='$formaction' method='post'>";
                 echo "<table border='1'>";
                 echo "<tr><th> &nbsp;Nr.&nbsp;             </th>
                           <th> &nbsp;KontoNr. - Bez.&nbsp; </th>
          ..
          ..

          Kommentar


          • #6
            PHP-Code:
            var field document.getElementsByName(name); 
            Hier liegt der Hase im Pfeffer. getElementsByName liefert ein Array zurück. Also dann höchstens so:
            PHP-Code:
            var field document.getElementsByName(name)[0]; 
            Alternativ geht das auch direkt über das Formular:
            PHP-Code:
            document.user_buchung[name
            Peter
            Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
            Meine Seite

            Kommentar


            • #7
              Beide Zeilen versucht, doch auch hier leider ohne Erfolg

              Ich hab irgendwie den verdacht, es hängt an meinem abschicken, dass er da einfach nicht in die function rein geht....

              Is aber nur so ne Vermutung...

              Gruß
              Norman

              Kommentar


              • #8
                Besorg dir erstmal den Firebug für den FF. Denn ich tippe auf einen Scriptfehler.

                Peter
                Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                Meine Seite

                Kommentar


                • #9
                  Normalerweise müsste doch die Fehlerkonsole trotzdem von Haus aus dabei sein. Drück mal Strg+Umschalt+J oder Extras->Fehlerkonsole.
                  [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                  Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                  Super, danke!
                  [/COLOR]

                  Kommentar


                  • #10
                    Zitat von AmicaNoctis Beitrag anzeigen
                    Normalerweise müsste doch die Fehlerkonsole trotzdem von Haus aus dabei sein. Drück mal Strg+Umschalt+J oder Extras->Fehlerkonsole.
                    Stimmt, die gibt es auch noch. Habe ich völlig vergessen.

                    Peter
                    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                    Meine Seite

                    Kommentar


                    • #11
                      Also die Fehlerkonsole brachte nach dem Aufruf der Seite und dem "Absenden" des Formulars lediglich css-Fehler....aber keine Script-Fehler....

                      Kommentar


                      • #12
                        Zitat von Normansmily Beitrag anzeigen
                        Also die Fehlerkonsole brachte nach dem Aufruf der Seite und dem "Absenden" des Formulars lediglich css-Fehler....aber keine Script-Fehler....
                        Natürlich - wenn deine Funktion fehlerhaft ist, wird sie abgebrochen, damit kein false zurückgegeben - also wird das Formular ganz normal abgesendet. Und auf der Folgeseite siehst du dann die Fehlermeldungen der vorgehenden nicht mehr.

                        Sorge also dafür, dass das Absenden des Formulars nicht stattfindet. Bspw., in dem du deine Funktion testweise erst mal über einen Link aufrufst.
                        I don't believe in rebirth. Actually, I never did in my whole lives.

                        Kommentar


                        • #13
                          Es ist ja aber keine Folgeseite, ich rufe ja die selbe nochmal auf.

                          Und in der Fehlerkonsole bleiben die Fehler ja auch drinnen, bis ich sie leere...also wird dort auch nix abgestellt...

                          Kommentar


                          • #14
                            Na dann zeig das ganze bitte mal online.
                            I don't believe in rebirth. Actually, I never did in my whole lives.

                            Kommentar


                            • #15
                              Online geht zur Zeit leider net, betreibe es momentan nur via XAMPP aufm USB-Stick. Firebug hab ich installiert, zeigt jedoch auch keinen Fehler an.
                              Sobald ich explizit einen Syntaxfehler einbaue, zeigt er den auch, habs gerade getestet.

                              Meine Vermutung immernoch, es liegt einfach am abschicken, kann jemand sagen, ob das abschicken beim formular so ok is?

                              Wenn ich nun das Abschicken des Formulars so gestalte, macht er rein garnix, beim Drücken des Buttons:
                              Code:
                              ....
                                     echo "<td><input name='buchungsdatum' size='10' value='$buchdatum_default'>  </td>";
                                     echo "<td><input name='buchungstext'>   </td>";
                                     echo "<td><input name='buchungsbetrag' size='8'> </td>";
                                     echo "</tr>";
                                     echo "</table>";
                                     echo "</form>";
                                     echo "<br />";
                                     echo "<input type=\"submit\" onsubmit='return check_eingabe()' value=\"SAVE\" />";

                              Kommentar

                              Lädt...
                              X