Form-Validation ohne Submit-Button

  • Hallo zusammen,


    ich würde gerne die Eingaben in einem Formular prüfen lassen. Das Problem: Die Daten werden nicht über einen Button mit dem Typ "Submit" abgeschickt, sondern über einen Link mit der Klasse btn-next:

    Code
    <a id="btn-assets" class="btn next">Weiter 
                                <i class="fa fa-arrow-right fa-fw"></i>
                            </a>


    Gibt es eine Möglichkeit die Prüfung dennoch mit Joomla-"Hausmitteln" vorzunehmen?

  • Die Daten werden nicht über einen Button mit dem Typ "Submit" abgeschickt, sondern über einen Link


    Die erste Frage wäre: Warum?
    Buttons sind da, um Formulare zu bestätigen. Links sind da, um zu navigieren.


    Wenn du das wirklich so machen willst, schau dir mal die Datei media/system/js/validate-uncompressed.js an. Dort läuft die Validierung ab und dort ist auch festgelegt, was wann passiert - insbesondere "validiere, wenn ein submit-Button in einem Formular mit der Klasse form-validate geklickt wird".

  • Hi,
    also vom Semantikstandpunkt her muss man ganz klar sagen das es falsch ist ein Anker-Element für das Ausführen eines Formulars zu verwenden.
    Was valide ist ist das Anker-Element ohne href zu verwenden. Aber deshalb das als Button zu missbrauchen halte ich für falsch und würde dir davon abraten.
    Erklär doch mal warum du keinen Button verwendest?


    Grüße

  • Einfach das Versenden/Submit auf ein CSS-Ziel, also einen Link oder besser den Button legen. Der Validator wird vor dem Versenden Feld für Feld ausgeführt und hängt an der Form.


    Code
    jQuery(document).ready{function(){
      jQuery('a#btn-assets').click(function(){
                jQuery(this).closest('form').submit();
         });
    });
  • Hallo und vielen Dank für eure Antworten.


    Folgendes ist gegeben: Das Formular umfasst verschiedene Schritte.


    Schritt 1: Benutzerangaben
    Schritt 2: Gewünschte Rolle
    ...


    Diese Schritte werden jeweils mit einem Klick auf "Weiter" bestätigt - hier wird im Grunde auf einen neuen Ankerpunkt verwiesen, ohne dass die Form hier tatsächlich abgeschickt wird. Schön wäre es also, wenn die Eingaben geprüft würden, bevor man auf den nächsten Schritt "springt".

  • Sowohl, als auch.


    Der Nutzer sollte halt aber auch schon bevor die Form abgeschickt wird, über fehlerhafte Eingaben informiert werden - einfach, um ihm das erneute Ausfüllen zu ersparen.

    • Hilfreich

    Der Nutzer sollte halt aber auch schon bevor die Form abgeschickt wird, über fehlerhafte Eingaben informiert werden - einfach, um ihm das erneute Ausfüllen zu ersparen.


    Um die zusätzliche Validierung mit JavaScript zu aktivieren, führe diese beiden Zeilen bei Klick auf deinen Link aus:

    Code
    var validator = new JFormValidator();
    validator.isValid('Selektor deines Formulars')


    Das erneute Ausfüllen solltest du dem Nutzer aber sowieso ersparen, da er bei deaktiviertem JavaScript oder wenn eine deiner JS-Dateien irgendeinen Fehler enthält ja nicht daran gehindert wird, ein invalides Formular abzuschicken. Bin mir gerade nicht sicher, ob das beim "alten" MVC automatisch zwischengespeichert wird, wenn du die serverseitige Validierung richtig machst. Beim "neuen" (unfertigen) muss man es bisher selbst machen.