Zwei Mehrfachauswahlfelder vergleichen
Ich habe zwei mal die gleichen Mehrfachauswahlfelder, also die auswahlmöglichkeiten sind die selben. Und ich möchte das ein Textfeld nur angzeigt wird, wenn bei beiden Mehrfachauswahlfeldern die gleichen Felder ausgewählt sind. Also mindestens einmal muss in beiden das selbe Auswahlfeld angeklickt sein. Aber wenn kein einziges mal das selbe angeklickt ist, dann soll das Feld nicht sichtbar sein.
Mit freundlichen Grüßen
12 Antworten
-
Hallo Lorenz, eine Möglichkeit wäre vielleicht dies (im betreffenden Textfeld bei "Nur anzeigen, wenn"):
let TextZeigen := false;
if Mehrfachauswahl1 and Mehrfachauswahl2 then
let MF1 := chosen(Mehrfachauswahl1);
let MF2 := chosen(Mehrfachauswahl2);
for x in MF1 do
let myMF := x;
for y in MF2 do
if y = myMF then TextZeigen := true end
end
end
end;
TextZeigen = true
-
Top danke funktioniert genauso wie gewollt
-
So müsste es übrigens auch gehen:
let TextZeigen := false;
if Mehrfachauswahl1 and Mehrfachauswahl2 then
let MF1 := chosen(Mehrfachauswahl1);
for x in MF1 do
if contains(concat(chosen(Mehrfachauswahl2)), x) then
TextZeigen := true
end
end
end;
TextZeigen
Ist mir bei Betrachtung des Codes gerade noch eingefallen. Nur der Vollständigkeit halber. ;)
-
Eine frage zur Textzeigen Variable weshalb funktioniert das so?
-
Könnten sie mir das zweite erklären also nur die if zeile
-
Ups, hat sich überschnitten ...
Bei "Nur anzeigen, wenn" gehts ja um eine Bedingung, die erfüllt sein muss. Diese Bedingung lautet hier, dass die Variable "TextZeigen" auf "Ja" bzw "true" stehen muss (das "= true" kann man dabei weglassen). Und gesetzt wird die Variable im Code vorher.
-
also könnte es auch "Srv" heißen und muss nur am ende true sein?
-
Das "if Mehrfachauswahl1 and Mehrfachauswahl2" bedeutet:
Wenn Mehrfachauswahl1 nicht leer ist und Mehrfachauswahl2 nicht leer ist. In dieser Kurzform kann man Felder darauf abfragen, ob sie einen Inhalt haben (oder bei logischen Feldern auf "Ja" bzw. "true" stehen). Und der Vergleich macht ja nur Sinn, wenn beide Mehrfachauswahlfelder einen Inhalt haben (also mindestens eine Option ausgewählt wurde).
-
Danke aber meinte diese Zeile : if contains(concat(chosen(Mehrfachauswahl2)), x)
-
Ja, die Namen von Variablen sind frei wählbar, "TextZeigen" könnte also auch "Srv", "RZwoDZwo oder "HansWurst" heißen. Allerdings muss sie natürlich immer gleich heißen. In diesem Fall müsste der Name also an drei Stellen geändert werden.
-
Ach so, sorry. Es ging um
if contains(concat(chosen(Mehrfachauswahl2)), x) then
Ich versuch's mal auf die Schnelle
chosen(Mehrfachauswahl2) = Alle gewählten Optionen des Auswahlfeldes in ein Array schreiben.
concat( ... ) = Einträge eines Arrays kommagetrennt in einem Textfeld zusammenfassen.
contains(FELDVAR, WERT) = Überprüfen, ob Feld bzw. Variable FELDVAR den Inhalt von WERT enthält.Frei übersetzt:
Wenn in den gewählten Optionen des Auswahlfeldes der Wert der Variable "x" vorkommt, dann ...
Wobei die Variable "x" bei jedem "for"-Schleifendurchlauf den jeweiligen Wert der gewählten Optionen aus "Mehrfachauswahl1" enthält.
Halbwegs verständlich?
-
ja ich kannte nur die concat funktion noch nicht. Vielen Dank
Content aside
- vor 5 JahrenZuletzt aktiv
- 12Antworten
- 2284Ansichten