Skip to main content
Participating Frequently
June 27, 2024
Answered

Formularfelder als Ebene oder anhand des Namens gesammelt aus- und einblenden

  • June 27, 2024
  • 1 reply
  • 446 views

Hallo zusammen,
ich habe ein Dropdown-Feld, bei dem je nach Auswahl Formularfelder ein- und ausgeblendet werden.

Aktuell habe ich ein Javascript hinterlegt, bei dem bei jedem if() die einzelnen Felder ein- und ausgeblendet werden, wie im folgenden Beispiel:

 

if(this.getField("dropdown").value == 1){

this.getField("feld1").display = display.visible;

this.getField("feld2").display = display.hidden;

}

 

Gibt es evtl. eine Möglichkeit, die Felder zu einer Gruppe oder Ebene zusammenzufassen und dann die ganze Ebene ein- und auszublenden oder vielleicht anhand der Feldnamen, so à la "alle Felder die 'Januar' im Namen haben sollen ein-/ausgeblendet werden?

 

Meine obige Varianten ist ein riesiger "Roman" und ich würde mir gerne eine Menge Schreibarbeit ersparen 😉

Vielen Dank schonmal für eure Hilfe.

This topic has been closed for replies.
Correct answer try67

Assuming you don't want to start renaming the fields in the file, you can do it like this:

 

// Collect all "January" fields into an array
var januaryFields = [];
for (var i=0; i<this.numFields; i++) {
	var fname = this.getNthFieldName(i);
	var f = this.getField(fname);
	if (f==null) continue;
	if (/january/i.test(f.name)) januaryFields.push(f);
}

// Show/Hide the January fields based on the field's value
if (this.getField("dropdown").value == 1){
	for (var i in januaryFields) {
		januaryFields[i].display = display.visible;
	}
} else {
	for (var i in januaryFields) {
		januaryFields[i].display = display.hidden;
	}
}

 

 

The first part of the code can be placed in a doc-level script, as it only needs to run once.

1 reply

try67
Community Expert
try67Community ExpertCorrect answer
Community Expert
June 27, 2024

Assuming you don't want to start renaming the fields in the file, you can do it like this:

 

// Collect all "January" fields into an array
var januaryFields = [];
for (var i=0; i<this.numFields; i++) {
	var fname = this.getNthFieldName(i);
	var f = this.getField(fname);
	if (f==null) continue;
	if (/january/i.test(f.name)) januaryFields.push(f);
}

// Show/Hide the January fields based on the field's value
if (this.getField("dropdown").value == 1){
	for (var i in januaryFields) {
		januaryFields[i].display = display.visible;
	}
} else {
	for (var i in januaryFields) {
		januaryFields[i].display = display.hidden;
	}
}

 

 

The first part of the code can be placed in a doc-level script, as it only needs to run once.

ccmelaAuthor
Participating Frequently
September 30, 2024

Works perfectly, many thanks for your help 🙂