Ankündigung

Einklappen
Keine Ankündigung bisher.

Automatischer submit nach 17 Zeichen

Einklappen

Neue Werbung 2019

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

  • Automatischer submit nach 17 Zeichen

    Hallo zusammen,

    ich würde gerne bei einem Formular in einem Text Feld nach der Eingabe von genau 17 Zeichen einen automatischen submit auslösen. Leider habe ich im Internet nix passendes gefunden.

    Hat jemand einen Idee?

    VIELEN DANK!

  • #2
    on keyup zählen wieviele Zeichen im Feld sind.

    Kommentar


    • #3
      Leider habe ich im Internet nix passendes gefunden.
      Nimm das hier und ändere es auf deine ID-Namen in den Form-Elementen ab.
      Code:
          function submitText() {
              if( this.value.length == 17){ document.forms["myform"].submit(); };
          }
          var el = document.getElementById("kundennummer");
          el.addEventListener("keyup", submitText, false);

      Kommentar


      • #4
        kleine Verbesserung:
        Code:
             function submitText() {
                if( this.value.length == 17){ this.form.submit(); };
            }

        Kommentar


        • #5
          damit hast Du das Problem einer längeren Eingabe per Paste nicht gelöst.

          wenn Du das verhindern willst

          HTML-Code:
          el.addEventListener("paste", function(e){e.preventDefault();}, false);
          die nächste Möglichkeit wäre das Feld per Drop mit einer längeren Eingabe zu füllen....

          HTML-Code:
          el.addEventListener("drop", function(e){e.preventDefault();}, false);
          Dann bleibt noch das Problem, dass einer seinen Finger auf '-' oder die Leertaste hält und erst nach dem 18. Zeichen wieder herunter nimmt...

          Du wirst also auch noch addEventListener("input",... bemühen müssen.

          Kommentar


          • #6
            Die kleine Verbesserung von Dormilch nehme ich gerne an.

            Zitat von kaminbausatz Beitrag anzeigen
            damit hast Du das Problem einer längeren Eingabe per Paste nicht gelöst.
            doch habe ich aber im Element selbst mit
            HTML-Code:
            <input type="text" name="kundennummer" id="kundennummer" required autofocus maxlength="17">
            gelöst, das Abschicken geht natürlich nur mit Taste drücken im Feld,
            und auch das Folgende stellt damit kein Problem dar.
            Zitat von kaminbausatz Beitrag anzeigen
            Dann bleibt noch das Problem, dass einer seinen Finger auf '-' oder die Leertaste hält und erst nach dem 18. Zeichen wieder herunter nimmt...


            Kommentar


            • #7
              Auch eine Lösung - wie sieht es denn bei drop aus?

              Kommentar


              • #8
                Vielen Dank an alle für die Lösungsvorschläge.

                Folgendes Script funktioniert bei mir...

                Header:

                Code:
                ​<script>          
                function Check() {          
                if (document.getElementById("kundennummer").value.length >16) {        
                document.getElementById("abfrage").submit();          
                       
                return false;          
                }        
                }        
                </script>
                HTML:

                Code:
                ​<form action="index.php" method="post" id="abfrage" name="abfrage" enctype="multipart/form-data"> <input type="text" name="kundennummer" id="kundennummer" onkeyup="Check(this)" maxlength="17" /> </form>

                Kommentar


                • #9
                  Zitat von kaminbausatz Beitrag anzeigen
                  Auch eine Lösung - wie sieht es denn bei drop aus?
                  wird auch abgeschnitten.ab dem x-ten Zeichen von maxlength.
                  https://www.w3.org/TR/html5/forms.ht...gth-attributes.

                  Script zum testen und ausprobieren:
                  PHP-Code:
                  <!DOCTYPE html>
                  <html lang="de">
                  <head>
                      <meta charset="UTF-8">
                      <title>Autosubmit Test</title>
                  </head>
                  <body>
                      <pre>
                      <?php if (isset($_POST['kundennummer'])){var_dump($_POST['kundennummer']);} ?>
                      </pre>
                      <form  id="myform" method="post">
                          <label for="kundennummer">Kundennummer</label>
                          <input type="text" name="kundennummer" id="kundennummer" required autofocus maxlength="17">
                     </form>        
                  </body>
                  <script>
                      function submitText() {
                          if( this.value.length == 17){ this.form.submit(); };
                      }
                      var el = document.getElementById("kundennummer");
                      el.addEventListener("keyup", submitText, false);
                  </script>
                  </html>

                  Kommentar


                  • #10
                    Drop löst kein keyup aus...

                    Kommentar


                    • #11
                      Ich hatte neulich bei einer ähnlichen Aufgabenstellung versucht, das über "change" zu lösen wie hier angedeutet https://jsfiddle.net/osb8sx11/ Allerdings funktioniert das selbst bei Eingaben per Tastatur nicht, was ich nicht verstehe. Wieso wird die Veränderung nicht wahrgenommen ?
                      [B]Es ist schon alles gesagt. Nur noch nicht von allen.[/B]

                      Kommentar


                      • #12
                        protestix

                        Dein Code funktioniert nicht wenn Du das Eingabefeld per drop befüllst - ich hatte in #5 angedeutet, dass Du noch addEventListener("input",... bemühen solltest.

                        @drsoong

                        change wird erst ausgelöst, wenn das Input Element den Fokus verliert.



                        Kommentar


                        • #13
                          @kaminbausatz: Danke für den Hinweis.
                          [B]Es ist schon alles gesagt. Nur noch nicht von allen.[/B]

                          Kommentar


                          • #14
                            Zitat von kaminbausatz Beitrag anzeigen
                            protestix

                            Dein Code funktioniert nicht wenn Du das Eingabefeld per drop befüllst - ich hatte in #5 angedeutet, dass Du noch addEventListener("input",... bemühen solltest.
                            nicht noch sondern nur.
                            Nur das addEventListener("input",... reicht aus, und zwar für alle Fälle also auch drop und paste.

                            Bin bei #5 davon ausgegangen, das du die Länge der Eingabe meintest, weshalb ich ja auch in #6 schrieb
                            das Abschicken geht natürlich nur mit Taste drücken im Feld,

                            Kommentar


                            • #15
                              Das ist mir klar, ich freue mich, dass Du es nun verstanden hast.

                              Kommentar

                              Lädt...
                              X