Announcement

Collapse
No announcement yet.

Unterscheidung submit

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Unterscheidung submit

    Hallo!

    Blöde Frage.. Wenn ich ein Formular habe und das einmal mittels klick auf den submit-Button submitte und dann als andere Variante über JS document.id.submit() ist das dann für den Browser genau das selbe?

    Oder ist ein JS-submit() ein "normaler" submit?

    Es geht hier um eine selbst erstellte shoutbox (PHP), diese soll ja autom. alle xx Sekunden aktualisiert werden aber eben wenn ein User gerade schreibt dann nicht, dann soll das eben geschriebene über den Post eben nicht als "abgesendet" behandelt werden (button submit) sondern als "JS-submit (über eine Timer-Funktion)" und wieder in das "Schreibfeld gesetzt"..

    Und ich befürchte ich muss wenn der submit über JS passiert ein fiktives Formularfeld schreiben das ich dann beim abfragen des Posts erkennen kann.. ausser man kann es sonst nocht wie erkennen..

    Ich hoff ihr könnt mir folgen...

    Juergen

    Danke!

  • #2
    Dann musst du die Formularfelder in unterschiedliche FORM-Tags legen. Dann kannst du verschiedene Submit-Buttons haben
    Christian

    Comment


    • #3
      Also es gibt genau ein Textfeld und ein submit Element.

      Ich möchte nur Differenzieren *wie* dieses formular submitted wurde, also entweder per *klick auf den button* oder autom. über die *Auto-JS-Funktion* . Ein normaler meta-refresh würde auch gehen, aber wenn der User gerade beim rerefsh tippt, ist das getippte weg, daher möchte ich pber JS-submit gehen und das getippte wieder (via post und php) ins Textfeld übernehmen, wenn eben via Auto-JS-submit abgesendet bis der User auf submit *klickt*, dann wird der Text eh ins File geschrieben.

      (Die Auto-JS-Funktion wäre irgend sowas setTimout(xx, document.id.submit()) irgendwie so..)

      Das muss ich irgendwie unterscheiden. Und ich dachte mir eben das die Auto-JS-submit funktion noch irgendeinen Wert in den Post mitnimmt, aber wie das ist die frage..

      //EDIT:
      Ich könnte in der Auto-JS-Submit Funktion den Wert eines bestehenden hidden Feldes zuweisen, oder?? Das wäre dann doch ne Lösung?!? Also im form xif ein hidden feld und wenn die Auto-JS-Submit passiert, dann vor dem document.id.submit() den Wert eines hidden feldes von 0 auf 1 ändern, oder??

      Danke!
      Zuletzt editiert von hausl78; 13.10.2010, 12:19.

      Comment


      • #4
        Du kannst den Value des Buttons serverseitig abfragen. Dazu Name und Value des Buttons belegen
        Christian

        Comment


        • #5
          Schon klar, aber das ändert ichts dran das das form submitted wurde, die Frage ist ja *wie* durch user klick oder eben durch den JS document.formid.submit();

          Ich spiel mich daheim mal, danke jedenfalls

          Juergen

          Comment


          • #6
            Schon klar, aber das ändert ichts dran...
            Ich habe das jetzt nicht ausprobiert, aber warum sollte in einem Request über Javascript die Daten vom Button drin sein, der überhaupt nicht gedrückt wurde?
            Christian

            Comment


            • #7
              Öhm.. gute Frage ;-) Ich war der Meinung, weil ich das form ja mittels document.[formid].submit(); absende..

              Also wenn das der Fall wäre das bei der Variante oben der button nicht da ist, dann wäre das sehr fein..

              Wie gesagt.. ich spiel mich abends daheim damit.. Geb dann bescheid ;-)

              Juergen

              Comment


              • #8
                Habs grad versucht, allerdings mit "GET" weil ich kein php da hab, da kommt der button nur wenn man echt draufklickt.. das wäre echt fein..

                Danke für den Hinweis!!!

                Comment


                • #9
                  Hallo,

                  ein Formular kann mehrere Submit-Buttons haben. Beim Absenden wird nur der Wert des Angeklickten übertragen. Wird das Formular per form.submit() abgesendet, wird auch kein Button-Value übergeben.

                  Gruß Falk
                  Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

                  Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

                  Comment


                  • #10
                    Hallo! Leider wird auch nichts bzgl. button übergeben, wenn ich ENTER drücke.. Das ist schelcht... Muss mir doch was anderes einfallen lassen, war der Meinung wenn man ENTER klickt, dann etspricht das einem Klick auf den button..

                    Juergen

                    Comment


                    • #11
                      Morgen! ;-)

                      Angenommen ich mache eine funktion in der Art:

                      Code:
                      myFunction() {
                               document.myForm.NameEinesHiddenFeldes.value = "1";
                               setTimeout("document.TheForm.submit()",10000);
                      }
                      geht sowas.. das ich einen Definierten Wert einens hidden Feldes zB "0" vor dem autom. JS-submit auf "1" setze (und denn dann in PHP am Post abfangen..)

                      Juergen
                      Zuletzt editiert von hausl78; 14.10.2010, 09:44. Reason: korr.

                      Comment


                      • #12
                        Sicherlich geht das
                        Christian

                        Comment


                        • #13
                          ah.. glaub habs grad hinbekommen ;-)

                          Comment


                          • #14
                            Hätte jetzt da noch eine Frage zu dem Thema...

                            Ich hab eine Datei die via JS alle 20 Sekunden neu geladen wird.. via einem setTimeout und ...submit(). Es gibt in dem Form ein Textfeld und ich würde es gerne hinbekommen, das der Timeout von dem letzten onKeyUp des Textfeldes weg gezählt wird also das während des Tippens kein auto-submit passiert..

                            Nachfolgend mein Code (der JS-Teil) und weiter unten was ich im web gefunden hab, aber ich bekomm es nicht hin das sauber zu vereinen...


                            Mein code - grundsätzlich (ist PHP seite hab deshalb einiges rausgenommen)..

                            Code:
                            <head>
                            <script type="text/javascript" language="JavaScript">
                                <!--
                                  function submitForm() {
                                      document.TheForm.submitType.value = "auto";
                                      document.TheForm.submit();
                                  }
                                  setTimeout("submitForm();",20*1000);
                                //-->
                            </script>
                            </head>
                            
                            <form action="" method="post" name="TheForm" autocomplete="off">
                            <input type="hidden" name="submitType" value="user" />
                            <input type="text" name="inputText" class="inputText" maxlength="70" value="" /><br />
                            <input type="submit" class="button" value="Shout !" /><br />
                            </form>
                            
                            // Cursor ans Textende setzen
                            <script type="text/javascript" language="JavaScript">';
                              document.TheForm.inputText.focus();";
                              document.TheForm.inputText.value = document.TheForm.inputText.value;";
                            </script>
                            Das hätt ich gefunden..

                            Code:
                            <html><head><title>Test</title>
                            <script type="text/javascript">
                            
                            var i = 0;
                            aktiv = window.setTimeout("Zaehlen()", 5000);
                            
                            
                            function Zaehlen () {
                              i = i + 1;
                              aktiv = window.setTimeout("Zaehlen()", 5000);
                            }
                            
                            function Aufhoeren () {
                              window.clearTimeout(aktiv);
                              alert(i + " Sekunden");
                            }
                            
                            
                            </script>
                            </head><body>
                            <form action="">
                            <input type="button" value="Klick" onclick="Aufhoeren()">
                            </form>
                            </body></html>

                            Comment


                            • #15
                              Glaub ich habs soweit mal funktionell hinbekommen, muss noch testen und kosmetik ;-)

                              HTML Code:
                              <script type="text/javascript" language="JavaScript">
                                  <!--
                                  function submitForm() {
                                      document.TheForm.submitType.value = "auto";
                                      document.TheForm.submit();
                                  }
                              
                                  function clearTimeoutAndStartAgain() {
                                      clearTimeout(alertTimerId);
                                      alertTimerId = setTimeout("submitForm();",5*1000);
                                  }
                                      
                                  var alertTimerId = 0;
                                  alertTimerId = setTimeout("submitForm();",5*1000);
                              
                                  //-->
                              </script>
                              und das form

                              PHP Code:
                              <input type="hidden" name="submitType" value="user" />
                              <?php

                                  
                              if ($formUserSubmit) {
                                      echo 
                              '<input type="text" onKeyUp="clearTimeoutAndStartAgain();" name="inputText" class="inputText" maxlength="70" value="" /><br />';
                                  } else {
                                      echo 
                              '<input type="text" onKeyUp="clearTimeoutAndStartAgain();" name="inputText" class="inputText" maxlength="70" value="'.$inputText.'" /><br />';
                                  }

                              ?><input type="submit" class="button" value="Shout !" /><br />
                              </form>

                              Comment

                              Working...
                              X