LastBoyScout: Wert in hidden-feld beim Absenden ändern!?

Hallo,

Ich möchte gern den Wert "0" eines HIDDEN Feld in einem Formular beim Klick auf den SUBMIT Button neben dem normalen absenden des Formulares bearbeiten.
Quasi als Zähler, wie oft der User den Button angeklickt hat!

Die Formularseite selber bleibt dabei im Browserfenster aktiv, da die Auswertung mittels PHP in einer neuen Seite erfolgt.

Da ich noch etwas unerfahren bin, die Frage: wie stelle ich so was mit Java an?

Gruß LastBoyScout

  1. Hi!

    Da ich noch etwas unerfahren bin, die Frage: wie stelle ich so was mit Java an?

    Im onsubmit Eventhandler das value des Felds veraendern. Gegebenenfalls noch true oder false mitgeben um (bei false) das Submit zu verhindern.

    --
    Trau Dich!
     
    1. Hab ich glatt uebersehen!

      wie stelle ich so was mit Java an?

      Keine Ahnung. Ich wuerde Javascript benutzen. ;)

      --
      Trau Dich!
       
      1. Hallo molily,

        Danke für die weiterführenden Links.
        Ich hab jetzt mal was zusammengebastelt:

          
        <script type="text/javascript">  
        var count = document.formular.counter.value;  
        function zaehler(){  
        count++;  
        document.formular.counter.value = count;  
        }  
        </script>  
        <form name="formular" action="#" onsubmit="zaehler()">  
        <input type="text" name="counter" value="0">  
        <input type="submit" value="Test">  
        </form>  
        
        

        Wenn ich count=0 setzte funktioniert es auch, nur eben nicht mit Übernahme des wertes aus dem Formularfeld.
        Was mache ich da noch falsch?

        Gruß LastBoyScout

        P.S. An all die anderen, welche sich jetzt so aufregen das ich für diese unbefriedigende erste Antwort nicht Dankbar genug war und dies auch noch kund tat:
        Ist es denn hier zu viel verlangt einfach mal direkt zu Antworte anstatt nen allgemeinen Link ohne direkten Bezug zur Frage zu senden?
        Es muss ja um Himmelswillen nicht gleich der gesamte Code gepostet werden,
        "Formularfeld wird mit: document.formular.feld.value angesprochen" hätte doch schon gelangt!
        Oder sagt Ihr jemanden der euch auf der Straße nach dem Weg Fragt auch nur die ungefähre Himmelsrichtung?

        1. [latex]Mae  govannen![/latex]

          var count = document.formular.counter.value;

          schreibe hier mal in die nächste Zeile
          alert(typeof count);

          Dir sollte etwas auffallen.

          Cü,

          Kai

          --
          Ash nazg durbatulûk, ash nazg gimbatul,ash nazg thrakatulûk, agh burzum-ishi krimpatul
          selfcode sh:( fo:| ch:? rl:( br:< n4:# ie:{ mo:| va:) js:) de:> zu:) fl:( ss:| ls:?
          1. Hallo Kai,

            alert(typeof count);

            Dir sollte etwas auffallen.

            Ok, hab´s gemerkt!
            Es ist dann keine Zahl mehr sondern Text und damit ist schlecht Rechnen.

            Kann man den den Typ auch ändern? und wenn ja wie?
            Der Start- Wert wird von PHP eingetragen und es handelt sich somit immer um eine Ziffer.

            Gruß LastBoyScout

            1. [latex]Mae  govannen![/latex]

              Ok, hab´s gemerkt!
              Es ist dann keine Zahl mehr sondern Text und damit ist schlecht Rechnen.

              Ziemlich.

              Kann man den den Typ auch ändern? und wenn ja wie?

              var count = +document.formular.counter.value;

              oder

              var count = parseInt(document.formular.counter.value, 10);

              Der Start- Wert wird von PHP eingetragen und es handelt sich somit immer um eine Ziffer.

              Das ist uninteresant, da die Werte von Texteingabefeldern in jedem Fall als string ausgelesen werden.

              Cü,

              Kai

              --
              Ash nazg durbatulûk, ash nazg gimbatul,ash nazg thrakatulûk, agh burzum-ishi krimpatul
              selfcode sh:( fo:| ch:? rl:( br:< n4:# ie:{ mo:| va:) js:) de:> zu:) fl:( ss:| ls:?
              1. Hi Kai,

                Aber wenn ich das so einbaue, um aus dem String ein Integer zu machen, funktioniert es trotzdem nicht!

                Wo liegt der Fehler?

                Oder ist mein Aufbau doch nicht so geeignet?

                LSB

                1. Hi,

                  Aber wenn ich das so einbaue, um aus dem String ein Integer zu machen, funktioniert es trotzdem nicht!

                  Bekommst du eine Fehlermeldung?

                  Wo liegt der Fehler?

                  Wahrscheinlich in deinem Code, den du uns aber verschweigst.

                  Oder ist mein Aufbau doch nicht so geeignet?

                  Wie ist denn der Aufbau?

                  mfG,
                  steckl

                  1. Hi steckl,

                    Der Code wird nicht verschwiegen, hab ihn weiter oben schon mal gepostet.

                    Eine Fehlermeldung wird nicht ausgegeben, im Feld erscheint anstatt des gewünschten Counter einfach: NaN
                    Vermutlich weil er es noch immer als String ansieht!?

                    LSB

                    1. Hi,

                      Der Code wird nicht verschwiegen, hab ihn weiter oben schon mal gepostet.

                      Da steht aber noch nicht an welcher Stelle du parseInt verwendest.
                      Wenn du es erst nach count++ verwenden würdest wäre es natürlich zu spät.

                      Eine Fehlermeldung wird nicht ausgegeben, im Feld erscheint anstatt des gewünschten Counter einfach: NaN

                      Ich hätte eine Fehlermeldung in der Fehlerkonsole erwartet, aber da kann ich mich auch täuschen.

                      mfG,
                      steckl

                      1. Da steht aber noch nicht an welcher Stelle du parseInt verwendest.

                        Ich hab
                        var count = document.formular.counter.value;
                        einmal gegen
                        var count = +document.formular.counter.value;
                        ausgetauscht und erfolglos getestet.
                        Und dann ebenso gegen die zweite Lösung
                        var count = parseInt(document.formular.counter.value, 10);
                        ebenfalls erfolglos.

                        Jetzt weis ich erstmal nicht weiter und werde noch etwas stöbern gehen!?

                        LSB

                        1. Also, ich hab das jetzt folgendermaßen gelöst und auch noch eine Rückfrage ab dem zweiten absenden des Formulares mit eingefügt:

                            
                          <script type="text/javascript">  
                          function zaehler(){  
                          var count = +document.formular.counter.value;  
                          count++;  
                          document.formular.counter.value = count;  
                          if (count > 1) {  
                          return(confirm('Möchten Sie die PDF Datei erneut Ausgeben ?'));  
                          }  
                          }  
                          </script>  
                          <form name="formular" action="#" method="post" target="_blank" onsubmit="return zaehler()">  
                          <input type="text" name="counter" value="0">  
                          <input type="submit" value="Test">  
                          
                          

                          So funktioniert es einwandfrei und der Wert des counter kann von PHP weiter genutzt werden.

                          Danke an alle für die Hilfe! ;-)

                          LSB

                          1. So funktioniert es einwandfrei und der Wert des counter kann von PHP weiter genutzt werden.

                            Oder kürzer:

                            function zaehler(){  
                            if( ++document.formular.counter.value > 1)  
                            return confirm('Möchten Sie die PDF Datei erneut Ausgeben ?');  
                            }  
                            
                            

                            Struppi.

                            1. Oder kürzer:

                              function zaehler(){

                              if( ++document.formular.counter.value > 1)
                              return confirm('Möchten Sie die PDF Datei erneut Ausgeben ?');
                              }

                                
                              Das ist natürlich noch um einiges eleganter.  
                                
                              Gruß  
                              LSB
                              
                          2. Hi,

                            So funktioniert es einwandfrei und der Wert des counter kann von PHP weiter genutzt werden.

                            Hast du auch verstanden, warum es vorher nicht funktioniert hat?
                            Meinen Post, in dem ich dich darauf hingewiesen habe hast du vielleicht überlesen.

                            mfG,
                            steckl

                            1. Hi,

                              Das entscheidende damit der Zähler fortlaufend funktioniert war target="_blank" im einleitenden form- Tag zu verwenden.

                              LSB

        2. Hiho,

          Ist es denn hier zu viel verlangt einfach mal direkt zu Antworte anstatt nen allgemeinen Link ohne direkten Bezug zur Frage zu senden?

          Da Du ja wohl meinen Link meinst:

          Klar haette ich dir Code schreiben koennen.
          Klar haette ich dir nen Link produzieren koennen, der genau auf ein Codebeispiel fuehrt.

          Was haettest Du davon gelernt?

          Ich habe Dir den Link auf eine Ansammlung von JS Anwendungsbeispilen fuer alle moeglichen Lebenslagen gegeben. Und ich habe extra eine Position in der Dokumentation gewaehlt, die es Dir ermoeglicht gut nachzuvollziehen, wo in der Dokumentation du dich befindest. Mit meiner Information haettest Du entweder nen brauchbares Bookmark setzen koennen oder schlicht und einfach fuer spaeter gewusst, wo du Informationen findest. Aber das wolltest Du ja scheinbar nicht.

          --
          Trau Dich!
           
          1. Hi Steel,

            Sorry, aber wenn ich in Fremden Gebiet nach dem Weg Frage, nützt mir ein "ungefähr in diese Richtung" wenig!
            Wenn ich in meinem Fachgebiet jemanden einen Rat gebe, sag ich auch nicht "Hier ist das Inhaltsverzeichniss vom Werkzeugschrank" sondern "Ich würde an deiner stelle dafür mal die Säge nehmen!"
            Ganz zu schweigen von der Bemerkung mit der Bezahlung, da wär ich schon ein Reicher Mann.

            So, nun hat jeder seinen Standpunkt ausreichend dar gelegt und ich würd sagen belassen wirs dabei und machen uns wieder ans Werk.

            Gruß
            LSB

        3. Hi,

          var count = document.formular.counter.value;

          Wo wird diese Zeile aufgerufen?
          Wenn ich den Code so verwende bekomme ich eine Fehlermeldung:
          Fehler: document.formular is undefined

          Beim Aufrufzeitpunkt existiert das Formular nämlich noch nicht.

          Versuche mal den Wert erst beim Laden der Seite (onload) auszulesen.

          Was mache ich da noch falsch?

          Du hättest vielleicht mal in die Fehlerkonsole schauen können.
          Im Firefox ist diese unter Extras -> Fehler-Konsole zu erreichen.

          mfG,
          steckl

    2. Das es beim Absenden des Formulares erfolgen sollte ist mir klar, aber wie genau spreche ich das Feld an? Bitte Code- Beispiel!

      Und wie funktioniert das mit der zusätzlichen Fehlerprüfung durch true und false?

      Gruß LastBoyScout

      P.S. Das es Javascript ist, war mir vorher schon klar, siehe die korrekt ausgewählte Rubrik!

      1. Hi,

        <http://de.selfhtml.org/javascript/index.htm@title=Dafuer gibts zahlreiche Anwendungsbeispiele im Web.>

        --
        Trau Dich!
         
        1. Hallo Steel,

          Dafuer gibts zahlreiche Anwendungsbeispiele im Web.

          Danke für die wirklich Ausführliche und konkrete Hile!
          Schreib doch am besten das nächste mal gleich: "Such dir´s selber zusammen"

          1. Hallo,
            altes deutsches Sprichwort: "Wie man in den Wald hineinruft, schallt es zurück".
            Du hat nun mal im Beitrag Java geschrieben und nicht Javascript! Daher brauchst Du dich nicht so flapsig rechtfertigen!

            Tja

          2. Hallo Steel,

            Dafuer gibts zahlreiche Anwendungsbeispiele im Web.

            Danke für die wirklich Ausführliche und konkrete Hile!
            Schreib doch am besten das nächste mal gleich: "Such dir´s selber zusammen"

            Hm. Ich weiss jetzt nicht, was Du hast. Ich habe dir einen wunderbaren Link gegeben. Dieser fuehrt Dich zu einem Anwendungsbeispiel in SELFHTML, ueber das du eigentlich haettest stolpern muessen, Bevor Du hier aufschlaegst und danach verlangst, dass Dir jemand Code schreibt. Dort wird eine Formularuberprufung gezeigt und erklaert. Damit solltest Du eigentlich alles haben, was Du brauchst. Mal ganz davon ab, dass ein banales Auslesen eines Formularvalues auch in SELFHTML (und beileibe ja nicht nur dort) ausfuehrlich erklaert wird.

            Komischerweise bist hast Du aber noch die Chuzpe dich ueber einen hilfreichen Link zu beschweren, statt froh zu sein, dass Dir ueberhaupt jemand auf eine Selbstverstaendlichkeit antwortet. Es war ja nun nicht so, dass Du irgendeine Besonderheit gefragt hattest.

            Wenn Du von mir (oder wem anders hier oder irgendwo) einen Javascriptkurs moechtest, koennen wir aber gern die Kostenfrage klaeren.

            --
            Trau Dich!
             
          3. Schreib doch am besten das nächste mal gleich: "Such dir´s selber zusammen"

            Ja, diese Antwort wäre deinem Verhalten entsprechend gewesen. Wenn du erwartest, hier kaut dir jemand die Lösung vor und du musst sie nur 1:1 kopieren, frag ich dich, was zahlst du dafür?

      2. Hallo,

        Das es beim Absenden des Formulares erfolgen sollte ist mir klar, aber wie genau spreche ich das Feld an?

        http://de.selfhtml.org/javascript/objekte/forms.htm
        http://de.selfhtml.org/javascript/objekte/elements.htm

        Und wie funktioniert das mit der zusätzlichen Fehlerprüfung durch true und false?

        http://de.selfhtml.org/javascript/sprache/eventhandler.htm#onsubmit
        Gemein war wohl return false im Fehlerfalle, um das Absenden zu verhindern.

        Mathias

        --
        Falls du es überlesen haben solltest, ganz oben steht nicht umsonst »Unser Forum ist eine Ergänzung zu SELFHTML« drüber.
        1. Ohja, den Link habe ich natürlich noch vergessen, auch wenn die Seite schon angesprochen wurde:

          http://de.selfhtml.org/javascript/beispiele/formulareingaben.htm