Ankündigung

Einklappen
Keine Ankündigung bisher.

autofocus

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

  • autofocus

    Hi,

    ich habe im verwendeten Seitenlayout unter JavaScript-Templates das Template js_autofocus ausgewählt. Allerdings wird beim Absenden eines Formulars nicht an die entsprechende Stelle (p.error) gesprungen. Woran kann das liegen?

    Viele Grüße,
    mapfei

  • #2
    Wenn das Formular eine html5-Validierung nutzt, wird keine .error Klasse geschrieben. Für das Script muss man die herkömmliche PHP Validierung nutzen und in den Formular-Einstellungen html5-Validierung gezielt deaktivieren.
    http://www.premium-contao-themes.com

    Kommentar


    • #3
      Hm, okay. Wenn ich aber beispielsweise die HTML5-Validierung ausschalte und in einem Feld mit Datumsprüfung ein falsches Format angebe, dann wird nicht an diese Stelle gesprungen,sondern das Captcha eingeblendet.

      Bei eingeschalteter HTML5-Validierung wird außerdem auch ein p.error mit "Bitte geben Sie das Datum im Format "TT.MM.JJJJ" ein!" erzeugt. Müsste das Script hier nicht dennoch funktionieren?

      Kommentar


      • #4
        Das Script schaut aber bei Pageload, nicht bei einem Status-Wechsel der html5-Validierung.

        Ja, Captcha ist ein Pflichtfeld.
        http://www.premium-contao-themes.com

        Kommentar


        • #5
          Verstehe. Ist aber für den User blöd, denn das eigentlich "wichtige" Feld steht weiter oben, das Captcha hingegen unten und somit weiss der User nicht, was Sache ist. Kann man das irgendwie anders lösen?

          Kommentar


          • #6
            An die native Validierung kommt man wohl nicht ran. Es braucht einen Event-Listener auf dem Feld, das bei .blur getriggert wird.
            https://stackoverflow.com/questions/...orm-validation

            Wäre eigentlich mal was für das Template im Contao-Kern. Ich nehme es mal als Feature-Request auf.
            http://www.premium-contao-themes.com

            Kommentar


            • #7
              Wie könnte denn so ein Script aussehen? Ich bekomme es irgendwie nicht hin. Weder mit noch ohne HTML5-Validierung. Die Fehlermeldung bleibt immer bei der Captcha-Eingabe hängen, statt z.B. beim falschen Datumsformat.

              Kommentar


              • #8
                Bei aktiver HTML5-Validierung braucht es eigentlich kein autofocus Script. Die Browser springen selbstständig zu dem Feld.
                http://www.premium-contao-themes.com

                Kommentar


                • #9
                  Schon, aber nicht in dem Falle, wenn z.B. als Datumsformat TT.MM.JJJJ angegeben ist und der Besucher TT.M.JJJJ angibt. Das wird dann erst bei Absenden des Formulars geprüft.

                  Kommentar


                  • #10
                    Zitat von mapfei Beitrag anzeigen
                    Schon, aber nicht in dem Falle, wenn z.B. als Datumsformat TT.MM.JJJJ angegeben ist und der Besucher TT.M.JJJJ angibt. Das wird dann erst bei Absenden des Formulars geprüft.
                    Aber dann sollte doch das normale js_autofocus greifen. Das prüft bei pageload und hier würde jetzt die .error Klasse auf dem input liegen.

                    ps. Ich glaube ich verstehe jetzt. Die Html5-Validierung ist befriedigt, aber Contao selbst validiert nicht. Damit bleibt das Feld falsch gefüllt.

                    Man würde hier mit einem input date Feld arbeiten (EX macht es so) und dort ein required pattern übergeben

                    Referenz: https://developer.mozilla.org/en-US/...ent/input/date

                    <input type="date" name="bday" required pattern="\d{4}-\d{2}-\d{2}">
                    Zuletzt geändert von Tim; 05.11.2020, 09:04.
                    http://www.premium-contao-themes.com

                    Kommentar


                    • #11
                      So ist es ja auch. Allerdings erscheint bei Absenden des Formulars auch das Captcha und das wird scheinbar priorisiert behandelt? Das Datumsfeld wirft einen Fehler mit p.error aus. Das Script ist auch drin im Footer.

                      HTML-Code:
                       <script>  (function() {  var p = document.querySelector('p.error') || document.querySelector('p.confirm');  if (p) {  p.scrollIntoView();  }  })();  </script>

                      Kommentar


                      • #12
                        Okay, auch ne Möglichkeit, um eine Fehleingabe zu verhindern. Worin besteht der Unterschied in den beiden Templates datepicker und datepicker_short?

                        Kommentar


                        • #13
                          Das Captcha hat immer Prio1. Es wird angezeigt, wenn der honypot scheitert.

                          Ich ergänze eine html5 pattern validierung in den Templates.
                          ---
                          _short ist nur für den Javascript-Picker interessant. Dieser greift standardmäßig nur noch in Safari als Fallback, weil Safari keinen Browser-eigenen Datepicker hat. "short" ist eine Auswahl ohne Jahr.
                          http://www.premium-contao-themes.com

                          Kommentar

                          Lädt...
                          X