Contao-Camp 2024
Ergebnis 1 bis 11 von 11

Thema: Per Javascript gefülltes Select-Menu meldet Ungültige Eingabe

  1. #1
    Contao-Nutzer
    Registriert seit
    20.02.2012.
    Beiträge
    123

    Frage Per Javascript gefülltes Select-Menu meldet Ungültige Eingabe

    Hi,

    ich überschreibe per JS die Options in einem Select, welches ich im Formulargenerator erstellt habe (dort nur ein Alibifeld "-" und "-"). Keine Pflichtfeld aktiviert. Beim Absenden des Formulars meldet es "Ungültige Eingabe" bei den ausgewählten Options. Schade. Formular geht nicht raus.

    Ist sicherlich eine Sicherheitsfeature - wie kann ich das umgehen? Oder was ist da falsch?

  2. #2
    Contao-Nutzer
    Registriert seit
    20.02.2012.
    Beiträge
    123

    Standard

    Kein Hinweis?

    Update:
    -> Querverweis zu https://github.com/contao/core/issues/4383 - ist wohl eher feature als Bug ... hilft mir trotzdem nicht. Brauche wohl einen Workaround.
    Geändert von Cyberlussi (01.08.2014 um 16:45 Uhr)

  3. #3
    Contao-Nutzer
    Registriert seit
    30.06.2009.
    Beiträge
    112

    Standard

    Hallo zusammen,

    ist zwar schon ein etwas älterer Beitrag, aber ich stehe aktuell auch vor dem gleichen "Problem".
    Den Sinn und Zweck hab ich in der Diskussion auf Github verstanden.

    Aber ich weiß jetzt leider nicht wie ich das umgehen kann.

    @Cyberlussi hast du dir mittlerweile helfen können?

    Danke im Voraus
    Dj-Harem

  4. #4
    Contao-Fan Avatar von Thraile
    Registriert seit
    17.12.2009.
    Ort
    Detmold
    Beiträge
    501
    Partner-ID
    6306

    Standard

    Kannst du nicht einfach die benötigten Werte per loadFormField-Hook passend setzen? Oder warum müssen die Werte per JS gesetzt werden?

  5. #5
    Contao-Nutzer
    Registriert seit
    30.06.2009.
    Beiträge
    112

    Standard

    Hallo,

    die Werte müssen nicht via JS bzw. PHP wie ich es gemacht habe ergänzt werden.
    Jedoch war das der Ansatz bei dem ich mit noch so weit selbst helfen konnte. :-)

    Beim loadFormField-Hook stehe ich leider auf dem Schlauch
    In die Contao API Reference habe ich schon einen Blick geworfen, was leider nicht geholfen hat.

    Für einen Denkanstoß wäre ich sehr dankbar.

    Grüße
    Dj-Harem

  6. #6
    Contao-Fan Avatar von Thraile
    Registriert seit
    17.12.2009.
    Ort
    Detmold
    Beiträge
    501
    Partner-ID
    6306

    Standard

    Was für Werte sollen in das Select eigentlich rein? Im Prinzip sollte es aber wie folgt funktionieren:

    Du erstellst dir deine eigene "mini-Extension", in der config.php registrierst du den Hook:
    PHP-Code:
    $GLOBALS['TL_HOOKS']['loadFormField'][] = array('myClass''changeSelect'); 
    In deiner Klasse kannst du dann einfach die Werte des Widgets überschreiben:
    PHP-Code:
    public function changeSelect($objWidget$formId$arrData$form)
        {
            
    //diesen Tiel nur im Formular mit ID 1 für alle Select-Elements ausführen
           
    if ($formId == || $objWidget->type == 'select') {
                
    //Array mit neuen Werten erstellen, für jeden Eintrag eine Kombimation aus Value und Label
                
    $arrOptions = array(
                    array(
                        
    'value' => 'value1',
                        
    'label' => 'label1'
                    
    ),
                    array(
                        
    'value' => 'value2',
                        
    'label' => 'label2'
                    
    ),
                );
                
    $objWidget->__set('options'serialize($arrOptions));
            }
            
            return 
    $objWidget;
        } 
    Die Autoload.php kanst du dir einfach übers Backend erstellen lassen. Das Beispiel ist ungetestet und natürlich etwas sinnfrei, da die Werte hier fest sind, das könnte man also auch einfach im Backend eintragen. Aber vom Prinzip her kann man so die werte per Hook ändern/anpassen. Auch werden in diesem Beispiel ALLE Select-felder im Formular mit ID = 1 geändert, hier müsste natürlich eine etwas andere Abfrage hin

  7. #7
    Contao-Nutzer
    Registriert seit
    30.06.2009.
    Beiträge
    112

    Standard

    Das sind Werte aus der Datenbank, welche über MetaModels gepflegt werden.

    Vielen Dank, dann werde ich das die nächsten Tage versuchen so umzusetzen.
    Kann ich darüber auch sagen dass manchen Werte die Option "Gruppe" haben?

    Vielen Dank und schon mal eine guten Rutsch ins neue Jahr.
    Dj-Harem

  8. #8
    Contao-Fan Avatar von Thraile
    Registriert seit
    17.12.2009.
    Ort
    Detmold
    Beiträge
    501
    Partner-ID
    6306

    Standard

    Zitat Zitat von Dj-Harem Beitrag anzeigen
    Kann ich darüber auch sagen dass manchen Werte die Option "Gruppe" haben?
    Klar, warum nicht, Prinzipiell kannst du alle Werte des Widgets anpassen.

  9. #9
    Contao-Nutzer
    Registriert seit
    20.02.2012.
    Beiträge
    123

    Standard

    Zitat Zitat von Thraile Beitrag anzeigen
    Kannst du nicht einfach die benötigten Werte per loadFormField-Hook passend setzen? Oder warum müssen die Werte per JS gesetzt werden?
    Genau. Das war auch meine Lösung und ist am saubersten! Da hat man auch die meisten Möglichkeiten (DB-Abfragen, etc).

  10. #10
    Contao-Nutzer
    Registriert seit
    13.06.2013.
    Beiträge
    99

    Standard

    Gleiches Problem, nur das ich wirklich keine andere Möglichkeit habe außer die Select Optionen mit JS aus dem FE zu befüllen...

    Jemand ne Idee wie ich diese Überprüfung ausschalten kann?

    VG

  11. #11
    Contao-Nutzer
    Registriert seit
    30.05.2011.
    Ort
    Köln
    Beiträge
    88

    HTML

    Ist zwar schon alt, aber ich hatte die gleiche Herausforderung.
    Lösung:

    Anstatt die Selectbox vom Type Select zu nutzen, den HTML-Code verwenden. Jetzt die Select-Option nach belieben mit Js ergänzen.

    HTML-Code:
    <div class="widget widget-select select mandatory">
            <label for="boxid" class="select mandatory">
                  <span class="invisible">Pflichtfeld </span>BoxLabel<span class="mandatory">*</span>
              </label>
      
       
    <select name="selName" class="select mandatory" required="" id=boxid>
              
                  <option value="">Bitte wählen</option>
    
    </select>
    </div>
    Für die Übergabe ein hidden Inputfeld verwenden und die Selectbox per JS füllen und onChange den Value in das Hidden-Feld schreiben.

    HTML-Code:
    $("select[name ='selName']").on("change", function() {
           $("input[name ='hiddenInput']").val(this.value);
    });

    Bei mir funktioniert das unter Contao 4.4

    Gurß Mike
    Geändert von cmike (26.07.2019 um 12:06 Uhr)

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
  •