it-swarm.com.de

Formularfeld anzeigen, wenn AJAX-Antwort falsch ist

Ich möchte meine Komponente mit etwas Interaktion erweitern. Zu diesem Zweck versuche ich, Felder nur bei Bedarf in einem Formular anzuzeigen. Dies funktioniert gut mit showon- Deklarationen in meinem form.xml.

Jetzt möchte ich ein Feld nur anzeigen, wenn ein AJAX- Aufruf, der beim Klicken auf eine Schaltfläche ausgelöst wird, false zurückgibt.

Natürlich könnte ich das in meiner Layout-Datei fest programmieren (zumindest denke ich, dass ich das könnte). Aber vielleicht gibt es einen Weg, den ich gehen kann

  • verstecke das Element, das in meinem form.xml deklariert ist
  • blende dieses Element ein, wenn der AJAX-Aufruf false zurückgibt
  • Verwenden Sie das nicht ausgeblendete Element in form.xml Als Indikator für andere Elemente wie showon = 'myhiddenfield:1'

Irgendwelche Ideen dazu?

1
MyFault

Nun, Sie können Ihre Versteck-/Einblendfunktionen in den Erfolgsparameter der Ajax-Methode einfügen.

var showMethod = function () {
    // show method code...
}

var hideMethod = function () {
    // hide method code...
}

$.ajax({
    type    : 'POST',
    data    : request,
    success : function(response) {
        if (response.yourvalue == false) {
            showMethod();
        } else {
            hideMethod();
        }
    }
});

Da anscheinend auch andere Felder betroffen sein müssen, ob Ihr Hauptfeld sichtbar ist oder nicht, können Sie einfach dasselbe für alle diese Felder gleichzeitig anwenden und warten, bis Sie die Sichtbarkeit Ihres Hauptfelds geändert haben, um zu entscheiden wenn die anderen angezeigt werden sollen.

Aktualisieren:

Ich bin jetzt ein bisschen verwirrt mit dem, was Sie wollen ... Sie können nichts in der XML verstecken, sondern nur bestimmte Parameter anhängen, die für jede Feldausgabe zu bestimmten Funktionen führen. Der Showon macht ein Feld sichtbar, wenn Sie einen bestimmten Wert in einem anderen Feld haben. Die Felder werden also ausgeblendet, bis dies eintritt. Das ist js und css. Sie können die Labelclass auch verwenden, um bestimmte Klassen an Ihre Felder anzuhängen https://docs.joomla.org/Form_field#Common_attributes . Im Allgemeinen verbirgt sich hinter dem Ein-/Ausblenden von Elementen ohnehin CSS.

Auf der anderen Seite habe ich das nicht ausprobiert, aber vielleicht können Sie einfach den showon-Parameter in den Feldern einstellen, die Sie anzeigen möchten, basierend auf dem Wert Ihres "Ajax-Feldes" und sehen, ob diese angezeigt werden, wenn Sie falsch werden.

2
FFrewin