Hallo zusammen,
ich brauche mal wieder eure Hilfe.
Kann ich mir mit einem Javascript die Anzahl, Index oder den Namen aller Teilformulare ausgeben, die sich in einem umschließenden Teilformular befinden?
Beispiel:
- Teilformular1
- Teilformular1.1
- Teilformular1.2
- Teilformular1.3
Bei "xfa.resolveNodes("Subform[ * ]").length;" erhalte ich eine Länge von 1, obwohl mehrere Teilformulare da drunter sind.
[*]
Der Sinn dahinter ist, dass ich mir den Index aus einem DropDown-Objekt lese und damit dann z.B. Teilformular1.2 einblenden und alle anderen ausblenden will.
Gruß Einheizer
[/*]
Anzahl Teilformulare in einem Teilformular (Javascript)
- nele_sonntag
- Beiträge: 2742
- Registriert: 04.05.2009, 15:12
- Wohnort: Frankfurt
- Kontaktdaten:
Anzahl Teilformulare in einem Teilformular (Javascript)
Hej Einheizer,
das einfachste ist, du legst eine If-Abfrage in das calculate der Subform selbst und sagst, blende dich ein/aus, wenn derund der Index aus dem DD ausgewählt wurde.
Das ist einfach, effizient und es kann dir egal sein, wie es anzusprechen wäre.
LG Mandy
das einfachste ist, du legst eine If-Abfrage in das calculate der Subform selbst und sagst, blende dich ein/aus, wenn derund der Index aus dem DD ausgewählt wurde.
Das ist einfach, effizient und es kann dir egal sein, wie es anzusprechen wäre.
LG Mandy
Anzahl Teilformulare in einem Teilformular (Javascript)
Hallo Nele,
Vielen Dank für deine schnelle Antwort,
aber ich will, dass dann alle anderen Teilformulare ausgeblendet werden. Dann müsste ich ja zu jedem Teilformular eine if-else Abfrage machen und das sind einige. Meine Idee war, dass ich ähnlich wie in einer Tabelle durchlaufe, den Wert mit dem Teilformular-Index überprüfe und dann entweder ein oder ausblende. Damit würde ich mir viel Schreibarbeit ersparen und beim Einfügen eines neuen Teinformulars, müsste ich nichts am Coding ändern.
13 if-else Anweisungen sehen etwas unschön aus, aber wenn es nicht anders geht, muss ich die wohl machen.
Vielen Dank für deine schnelle Antwort,
aber ich will, dass dann alle anderen Teilformulare ausgeblendet werden. Dann müsste ich ja zu jedem Teilformular eine if-else Abfrage machen und das sind einige. Meine Idee war, dass ich ähnlich wie in einer Tabelle durchlaufe, den Wert mit dem Teilformular-Index überprüfe und dann entweder ein oder ausblende. Damit würde ich mir viel Schreibarbeit ersparen und beim Einfügen eines neuen Teinformulars, müsste ich nichts am Coding ändern.
13 if-else Anweisungen sehen etwas unschön aus, aber wenn es nicht anders geht, muss ich die wohl machen.
Anzahl Teilformulare in einem Teilformular (Javascript)
Hallo Einheizer,
z.B. Teilformular1.2 einblenden und alle anderen ausblenden? Dann mach’s in der umgekehrten Abfolge: Alle ausblenden und dann das "eine" einblenden.
vg armine
z.B. Teilformular1.2 einblenden und alle anderen ausblenden? Dann mach’s in der umgekehrten Abfolge: Alle ausblenden und dann das "eine" einblenden.
vg armine
Anzahl Teilformulare in einem Teilformular (Javascript)
Hallo Armine,
danke, das ist mir schon klar. Ist aber unschön und nervig bei Änderugen, da ich dann immer den Code ändern muss.
Nach Neles Beschreibung (1 bis n Teilformulare):
function formVisibility (i_index){
if (index == 1)
TF_1_1.presence = "visible";
else
TF_1_1.presence = "hidden";
....
....
if (index == n)
TF_1_n.presence = "visible";
else
TF_1_n.presence = "hidden";
}
Wäre es so aber nicht schöner und eleganter (1 bis n Teilformualre):
Function formVisibility (i_index){
o_forms = "Alle Teilformulare unter TF1";
o_formsLength = o_forms.length;
for(i = 0; i < oformsLength; i++){
if (i_index == i)
"Teilformulare mit dem Index i " .presence = "visible";
Else
"Teilformulare mit dem Index i" .presence = "hidden";
}
}
Mir fehlt im Script das Fett geschriebene. Ich komme nicht drauf, wie ich alle child Teilformualre (Subforms) auslesen kann, die sich genau nur unter einem Teilformular befinden.
Greetz Einheizer
danke, das ist mir schon klar. Ist aber unschön und nervig bei Änderugen, da ich dann immer den Code ändern muss.
Nach Neles Beschreibung (1 bis n Teilformulare):
function formVisibility (i_index){
if (index == 1)
TF_1_1.presence = "visible";
else
TF_1_1.presence = "hidden";
....
....
if (index == n)
TF_1_n.presence = "visible";
else
TF_1_n.presence = "hidden";
}
Wäre es so aber nicht schöner und eleganter (1 bis n Teilformualre):
Function formVisibility (i_index){
o_forms = "Alle Teilformulare unter TF1";
o_formsLength = o_forms.length;
for(i = 0; i < oformsLength; i++){
if (i_index == i)
"Teilformulare mit dem Index i " .presence = "visible";
Else
"Teilformulare mit dem Index i" .presence = "hidden";
}
}
Mir fehlt im Script das Fett geschriebene. Ich komme nicht drauf, wie ich alle child Teilformualre (Subforms) auslesen kann, die sich genau nur unter einem Teilformular befinden.
Greetz Einheizer
Anzahl Teilformulare in einem Teilformular (Javascript)
Also deine Beschreibung ist leider nicht eindeutig.
Wenn Du jedes Teilformular individuell benennst, dann hast Du auch immer nur 1 Instanz eines jeden Teilformulars vorliegen.
Darum liefert die resolveNodes() auch nur 1 zurück.
Ich hätte nun 2 Lösungen:
1. Für mehrere individuell benannte Teilformulare.
2. Für mehrere identisch benannte Teilformulare.
Wie das Ganze funktioniert, siehst Du in der Datei anbei.
Wenn Du jedes Teilformular individuell benennst, dann hast Du auch immer nur 1 Instanz eines jeden Teilformulars vorliegen.
Darum liefert die resolveNodes() auch nur 1 zurück.
Ich hätte nun 2 Lösungen:
1. Für mehrere individuell benannte Teilformulare.
Code: Alles auswählen
var aSubforms = [],
vTarget = xfa.resolveNode("Formular1.#subform.Teilformular1"),
vIndex = parseInt(DropdownListe1.rawValue) - 1;
function findSubforms (vNode, sTargetName, aSubforms) {
if (vNode.className === "subform" && vNode.parent.name === sTargetName) {
aSubforms.push(vNode);
}
for (var i = 0; i < vNode.nodes.length; i++) {
findSubforms (vNode.nodes.item(i), sTargetName, aSubforms);
}
}
findSubforms (vTarget, vTarget.name, aSubforms);
aSubforms.forEach( function (element, index) {
element.presence = index === vIndex ? "visible" : "hidden";
});
2. Für mehrere identisch benannte Teilformulare.
Code: Alles auswählen
var aSubforms = xfa.resolveNodes("Formular1.#subform.Teilformular2.Teilformular[*]"),
vIndex = parseInt(DropdownListe1.rawValue) - 1;
for (var i = 0, j = aSubforms.length; i < j; i += 1) {
aSubforms.item(i).presence = i === vIndex ? "visible" : "hidden";
}
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Anzahl Teilformulare in einem Teilformular (Javascript)
Hallo radzma,
vielen Dank. Ich hatte vergessen alle Teilformulare identisch zu bennen.
Greetz Einheizer
vielen Dank. Ich hatte vergessen alle Teilformulare identisch zu bennen.
Greetz Einheizer