Ergebnis 1 bis 9 von 9

Thema: Mehrere Select-Menus – eines auszufüllen ist zwingend

  1. #1
    Contao-Fan
    Registriert seit
    01.07.2009.
    Beiträge
    348

    Standard Mehrere Select-Menus – eines auszufüllen ist zwingend

    Hallo zusammen

    Ich habe ein Formular –*und eine Frage: Im Formular gibt es 15 Select-Menus mit den Werten 10, 20, 30, 40, 50 (Anzahl bestellbarer Broschüren). Nun ist es zwingend, mindestens eine Anzahl bei einem dieser 15 Menus auszuwählen, dürfen natürlich auch mehrere sein.

    Lässt sich das irgendwie einstellen?

    Grüsse und dankeschön
    Chris

  2. #2
    Contao-Fan
    Registriert seit
    01.07.2009.
    Beiträge
    348

    Standard

    Hat niemand eine Idee? Gibt es keine Erweiterung, die sowas könnte?

    Grüsse, Chris

  3. #3
    Contao-Urgestein Avatar von fiedsch
    Registriert seit
    09.07.2009.
    Ort
    München
    Beiträge
    2.943

    Standard

    In den Select Menüs gibt es wahrscheinlich auch die Option 0 oder ein Text wie "bitte wählen" o.Ä. (=nichts bestellen)?

    Ich würde per Javascript beim For,-Submit die Auswahlen aller Selects addieren (hier ggf. Text ist 0) und falls Summe == 0 das Abschicken unterbinden und dem User eine Meldung ausgeben.

    Serverseitig (weil Du Dich nur darauf verlassen darfst und weil ein User JS ausgeschaltet haben könnte) würde ich den processFormData-Hook (https://docs.contao.org/books/api/ex...rocessformdata) verwenden um dort das Gleiche noch Mal zu machen.

  4. #4
    Contao-Fan
    Registriert seit
    01.07.2009.
    Beiträge
    348

    Standard

    Danke für den Tipp –*aber mit meinem technischen Stand habe ich keine Chance, das umzusetzen. Da werde ich einen «Kenner» beiziehen müssen. Bietet sich vielleicht jemand an?

    Genau, «Bitte wählen…» (ohne Wert) existiert bereits.

    Grüsse, Chris

  5. #5
    Contao-Urgestein Avatar von fiedsch
    Registriert seit
    09.07.2009.
    Ort
    München
    Beiträge
    2.943

    Standard

    Ganz kurz als Beispiel wie es gehen könnte (das lässt sich bestimmt noch verfeinern):

    Annahmen

    • Du hast jquery in Deinem Seitenlayout eingebunden
    • im HTML hast Du Dein Formular mit den <select>s denen Du jeweils die CSS-Klasse myselect gegeben hast:


    Code:
    <form action=""> 
      <select name="select1" class="myselect"> 
        <option value="0">bitte wählen</option> 
        <option value="1">eins</option> 
        <option value="2">zwei</option> 
        <option value="3">drei</option> 
        <option value="4">vier</option> 
        <option value="5">fünf</option> 
      </select> 
      <select name="select2" class="myselect"> 
        <option value="0">bitte wählen</option> 
        <option value="1">eins</option> 
        <option value="2">zwei</option> 
        <option value="3">drei</option> 
        <option value="4">vier</option> 
        <option value="5">fünf</option> 
      </select> 
      <button type="submit" id="submit_button">go!</button>
    </form>
    Mit dem folgenden Javascript Schnipsel reagierst Du auf das Formularabsenden, prüfst die Auswahl und gibts ggf. ein Meldung an den User aus und unterbindest die Weitere Verarbeitung des Formulars (d.h. das Abschicken):

    Code:
    <script>
    $(document).ready(function() {
    
      $('#submit_button').click(function(event) {
    
        var sum = 0;
    
        $(".myselect").each(function() {
          sum += parseInt($(this).val(), 10); 
        });
    
        if (sum < 1) {
          event.preventDefault();
          alert("Sie haben nichts ausgewählt!");
        }
    
      })
    });
    </script>

  6. #6
    Contao-Fan
    Registriert seit
    01.07.2009.
    Beiträge
    348

    Standard

    Danke für die Hilfestellung!

    Kann es sein, dass trilobit_formvalidation dafür sorgt, dass das (neue) Script nicht richtig funktioniert?
    Oder hat es damit zu tun, dass der Wert in meinem Fall nicht nur aus Zahlen besteht?

    Es handelt sich um ein Bestellformular für mehrere mehrsprachige Broschüren. Da die Feldbezeichnung nur die Sprache (DE/FR/IT) beinhaltet und im Mail, das generiert wird, nur mit einer Zahl dahinter erscheint, wird die Artikelbezeichnung hinzugestellt, weil sonst bei 5 deutschsprachigen Broschüren nicht ersichtlich wäre, was bestellt wurde.

    Grüsse, Chris

  7. #7
    Contao-Fan Avatar von Stranger
    Registriert seit
    20.06.2009.
    Ort
    Blankenburg
    Beiträge
    746
    Partner-ID
    5635
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von ChrisT Beitrag anzeigen
    Danke für den Tipp –*aber mit meinem technischen Stand habe ich keine Chance, das umzusetzen. Da werde ich einen «Kenner» beiziehen müssen. Bietet sich vielleicht jemand an?

    Genau, «Bitte wählen…» (ohne Wert) existiert bereits.

    Grüsse, Chris
    Für sowas man eine eigene Erweiterung schreiben, ist sowieso besser als mit diesem EFG-Gedöns
    Eine Javascript-Abfrage wie hier als Lösung genannt allein reicht sowieso nicht aus, da man das Clientseitig manipulieren kann. Man muss es sowieso mit PHP nach dem Absenden checken.
    Ich würde mir trauen sowas umzusetzen, hab schon ungefähr 30 Erweiterungen für Contao entwickelt. Kannst mich gerne mal anrufen, dann können wir darüber sprechen.
    Du willst dich bei mir bedanken?
    Ich freue mich über Geschenke von meiner Amazon-Wunschliste.

    Contao-Anwender seit 2008
    Contao-Entwickler seit 2013, mehr als 50 Contao Erweiterungen programmiert

    Mein Unternehmen aus Blankenburg (Harz): Fast & Media

  8. #8
    Contao-Urgestein Avatar von fiedsch
    Registriert seit
    09.07.2009.
    Ort
    München
    Beiträge
    2.943

    Standard

    Zitat Zitat von Stranger Beitrag anzeigen
    Eine Javascript-Abfrage wie hier als Lösung genannt allein reicht sowieso nicht aus, da man das Clientseitig manipulieren kann. Man muss es sowieso mit PHP nach dem Absenden checken.
    Siehe #3 ;-)

  9. #9
    Contao-Urgestein Avatar von fiedsch
    Registriert seit
    09.07.2009.
    Ort
    München
    Beiträge
    2.943

    Standard

    Zitat Zitat von ChrisT Beitrag anzeigen
    Oder hat es damit zu tun, dass der Wert in meinem Fall nicht nur aus Zahlen besteht?
    Genau damit. Weil Du es nicht anders angegeben hattest bin ich in meinem kurzen Beispielskript von Zahlen als Wertn ausgegangen.

    Und bei Werten, die keine Zahlen sind ergibt

    HTML-Code:
    parseInt($(this).val(), 10);
    dann 0 (Null), die Summe bleibt also Null und das Formular wird weiter als nicht ausgefüllt angesehen.

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •