Bailey: Abbruch des Scriptes an verschiedenen Stellen

Hallo zusammen,

Folgendes: habe ein Eingabeformular, in welchem Daten erfasst werden, mit denen dann später gearbeitet werden soll. Diese Funktionen sind soweit auch ok, nur, dass ich in verschiedensten Funktion Fehlermedlungen habe und nachdem man die mit OK bestätigt hat, soll das aktuelle Script abgebrochen werden und das Formular ansich neu geladen werden, sodass der Nutzer von vorne beginnen kann oder alternativ seine bereits eingegebenen Daten abändern.

Versteht jemand was ich meine? Wie kann ich das am Besten umsetzen?

Grüsse,
Baily

  1. Hallo Bailey,

    ganz konnte ich Dein Problem nicht nachvollziehen aber Du suchst vll nach return?

    Mit freundlichem Gruß
    Micha

    1. Huhu Micha,

      das return hab ich auch schon überlegt, aber das ist nicht ganz das was ich suche - glaube ich...

      Ich geb Dir mal 2 Beispiele. In der ersten Funktion frage ich das Alter des Nutzers ab, wenn dieser z.B. unter 25 ist nutzt ihm das Formular nichts. D.h. das Script muss abgebrochen werden. In einer anderen Funktion frage ich einfach nur den Inhalt eines Eingabefeldes ab (ob es leer ist) und wenn ja, dann soll auch das Scrupt abgebrochen werden.
      Also: 2 unterschiedliche Funktionen, 2 unterschieliche Stelle zum Abbrechen. Und dafür suche ich einfach einen Befehlt, ein Funktion oder was auch immer, dass das Script abbricht und neu läd (z.B.).

      Mit dem return breche ich zwar die aktuelle Funktion ab, komme aber in eine übergeordnete zurück, die dann weiter ausgeführt wird, was sie aber nciht soll in einem Abbruch Fall.

      Ich hoffe Du verstehst mich nu n bißchen besser. ^^
      Bailey

      1. Hi Bailey,

        wann und wie wird bei dir das/die Skript(e) aufgerufen? Im Tag <form> mit onsubmit oder bei den einzelnen <input> Feldern?
        Kopier uns bitte mal deinen Quelltext (HTML + Javascript) von deinem Beispiel ins Forum. Sonst weiß keiner, was der andere meint.

      2. Hallo Bailey,

        Ich hoffe Du verstehst mich nu n bißchen besser. ^^

        Und return=false kannst Du in Deiner anderen Funktion nicht nutzen?

          
        function mainFunction(value) {  
          if(subFunctionAge(value)) {  
            window.alert("Alt genug fuer Tischtennis");  
          }  
          if(!subFunctionEmpty(value)) {  
            window.alert("Nicht leer");  
          }  
        }  
          
        function subFunctionAge(value) {  
          return (value < 25);  
        }  
          
        function subFunctionEmpty(value) {  
          return (value == "");  
        }  
        
        

        Verschachteln kannst Du das ja auch usw.

        Mit freundlichem Gruß
        Micha

        1. An eine Verschachtelung hab ich auch schon gedacht, schrecke aber noch davr zurück, weil es evtl. zu umfangreich wird.

          Deine Lösung ist für 1 Fehlermeldung ok, aber nicht wenn ichs global an verschiedenen Stellen einsetzen will. Ich komm wahrscheinlich net um ne Verschachtelung drumherum, dann muss ich meine ganzen Funktionen auseinanderpflücken. :(

          Es wär äußerst praktisch, wenn es einen Befehl wie "Exit Function" in Javascript geben würde...

          1. Hallo Bailey,

            Es wär äußerst praktisch, wenn es einen Befehl wie "Exit Function" in Javascript geben würde...

            Das ist return (ohne Parameter) aber ohne Dein Problem mit Code-Auszug zu sehen, stochern wir noch lange im Dunkeln.

            Mit freundlichem Gruß
            Micha

  2. So, da bin ich wieder. ^^

    Ich setz es jetzt doch mit dem return um, hab es wie folgt gestrickt:

      
    function berechne()  
    {  
     // Kontrolliert, ob es das eingegebene Datum gibt und gibt das genaue Alter zurück  
     cal_Alter = checkGebDat();  
      
     if (cal_Alter == false)  
     {  
      // wenn das Alter nicht stimmt mache nichts  
     }  
     else  
     {  
      // ansonsten führe alle andere Funktion aus  
     }  
    }  
      
    
    

    Hab aber nun ne neue Frage:
    Wenn ich die Funktion so lasse, wird die Fehlermeldung aus checkGebDat() 1x gezeigt (so wie es seien soll). Setze ich aber direkt den Funktionsnamen in den Code, so:

      
    function berechne()  
    {  
     // Kontrolliert, ob es das eingegebene Datum gibt und gibt das genaue Alter zurück  
     cal_Alter = checkGebDat();  
      
     if (checkGebDat() == false)  
     {  
      // wenn das Alter nicht stimmt mache nichts  
     }  
     else  
     {  
      // ansonsten führe alle andere Funktion aus  
     }  
    }  
      
    
    

    gibt er mir die Fehlermeldung 2x aus. Warum? Funktion checkGebDat():

      
    function checkGebDat()  
    {  
     // Geburtsdatum  
     var t,m,j,GebDatum;  
     t=document.getElementById("inputTag").value;  
     m=document.getElementById("inputMonat").value;  
     j=document.getElementById("inputJahr").value;  
     // aktuelles Datum  
     var heute  = new Date();  
     var heuteTag  = heute.getDate();  
     var heuteMonat = heute.getMonth() + 1;  
     var heuteJahr  = heute.getFullYear();  
      
     // Überprüft, ob das Geburtsdatum gültig ist  
     GebDatum = new Date(j,m-1,t);  
     if(GebDatum.getDate()==t && GebDatum.getMonth()+1==m && GebDatum.getFullYear()==j)  
     {  
     }  
     else  
     {  
      alert("Bitte geben Sie ein gültiges Geburtsdatum ein.");  
      alert("Return falsch");  
      return false;  
     }  
     }  
    
    

    Eine Anmerkung noch: die Variable cal_Alter ist global.

    Grüsse,
    Bailey

    1. So, da bin ich wieder. ^^

      Ja, grüß' dich!!

      Hab aber nun ne neue Frage:

      Kann passieren...

      Setze ich aber direkt den Funktionsnamen in den Code, so:

      -snip-

      gibt er mir die Fehlermeldung 2x aus. Warum? Funktion checkGebDat():

      Das ist richtig so. Denn: Bei der Zuweisung der Variablen cal_Alter muss der Browser deine Funktion checkGebDat() aufrufen, um den neuen Wert zu ermitteln.
      In der nachfolgenden if Anweisung muss er aber ebenso wissen, was er mit "false" vergleichen soll. Also springt der Browser an dieser Stelle wieder in deine Funktion hinein und ermittelt den Wert zum Vergleichen. Er kommt also wieder an deinem alert() vorbei.

      Bleibe also lieber bei deinem ersten Skript ;-)

      Gruss

      1. Gut, dann bleib ich bei dem.

        Schanke Dön Heiko. :o)

        Grüsse,
        Bailey