Forenindex » Programme » Web/Internet » PDF Grundlagen / Web / eForms » Acrobat X Javascript: Per Kontrollkästchen eine Gruppe deaktivieren

Acrobat X Javascript: Per Kontrollkästchen eine Gruppe deaktivieren

sacrifice_87
Beiträge gesamt: 7

27. Apr 2015, 12:21
Bewertung:

gelesen: 15732

Beitrag als Lesezeichen
Hallo,
ich hoffe ihr könnt mir helfen, denn ich versuche mich bei Acrobat (X, Vers. 10.1.13.16) in Javascript einzuarbeiten und habe für die folgende Frage leider für mich nichts verständliches gefunden in diversen Foren/API References.

Ich möchte mit dem Kontrollkästchen "A" eine Gruppe von Kontrollkästchen deaktivieren und ausblenden. Wenn "A" aber wieder deaktiviert wird, sollte man die anderen Kontrollkästchen einzeln wieder anwählen können.

(Hintergrund, warum es wichtig ist, dass die Felder auch deaktiviert werden: Ich habe jedes Feld mit Zahlen hinterlegt, die in einem Summenfeld zusammengezählt werden, "A" wäre ein "Alle"-Feld, wenn man aber jetzt nicht alle anwählen möchte, wird im Summenfeld nur das jeweils andere Kästchen zusammengezählt. Da aber dabei auch die Kombination offen ist, dass "A" zu allen auch nochmals dazu gezählt werden kann, müssten bei einem Aktivierten "A" alle anderen gesperrt/deaktiviert werden).

Ich habe es bisher - dank diversen Postings - geschafft, die Felder auszublenden/Einzublenden wenn "A" aktiviert wird. Allerdings schaffe ich es nicht, dass die Felder deaktiviert werden:

Script in "A"
Code
if (event.target.value == "Off")  
this.getField("GRUPPE").display = display.visible;
else this.getField("GRUPPE").display = display.hidden;



Ich habe es unter anderem mit diesem Code hier versucht zu ergänzen:
https://answers.acrobatusers.com/...checkbox-q17478.aspx

Jedoch hat er mir den Befehl "ON" statt "OFF" nicht genommen, eventuell ein Denkfehler meinerseits? "True" "False" habe ich auch ausprobiert. In den API References habe ich den Befehl "checkThisBox " gefunden, hier bin ich aber nicht wirklich weit gekommen?

Könnt ihr mir hier bitte helfen? Das wäre sehr lieb. Ich hoffe ich hab mich halbwegs verständlich ausgedrückt, sorry falls nicht.

Acrobat X Javascript: Per Kontrollkästchen eine Gruppe deaktivieren

MurphysLaw
Beiträge gesamt: 588

27. Apr 2015, 13:35
Bewertung:

gelesen: 15709

Beitrag als Lesezeichen
Hast Du es auch schon mit "enabled" versucht? Das sollte eigentlich die richtige Property sein.

Außerdem kannst Du das ganz einfach kürzer machen/togglen:
Code
this.getField("GRUPPE").enabled == (event.target.value == "Off"); 


;-)

Grüße,
Murphy

________________________________________

Die letzte Stimme, die man hört, bevor die Welt explodiert, wird die Stimme eines Experten sein, der sagt: Das ist technisch unmöglich! (Sir Peter Ustinov)

Acrobat X Javascript: Per Kontrollkästchen eine Gruppe deaktivieren

sacrifice_87
Beiträge gesamt: 7

27. Apr 2015, 16:16
Bewertung:

gelesen: 15645

Beitrag als Lesezeichen
Vielen herzlichen Dank für die wirklich rasche Antwort.

"Enabled" hatte ich noch nicht probiert, muss ich auch gestehen habe ich bisher nicht gefunden. Allerdings hat es leider nicht funktioniert, weder mit dem "OFF" (auch mit "On" oder "Yes" nicht) noch mit dem verkürzten Code.
Die weiteren Felder werden nicht deaktiviert, hab das mal bei einer zweiten Gruppe ("KOMBO") ausprobiert. Ich habe hier einmal das PDF angehängt.
Werde aber noch etwas mehr in dem Acrobat API Preferences suchen, eventuell hab ich hier einen Denkfehler :(


AnsichtPdf http://we.tl/EnDQmRuMNt
(Über wetransfer.com)



Code
//------------------------------------------------------------- 
//-----------------Bearbeiten Sie nicht die XML-Tags--------------------
//-------------------------------------------------------------

//<AcroForm>
//<ACRO_source>A:Annot1:MouseUp:Action1</ACRO_source>
//<ACRO_script>
/*********** gehört zu: AcroForm:A:Annot1:MouseUp:Action1 ***********/
if (event.target.value == "Off")
this.getField("GRUPPE").display = display.visible;
else this.getField("GRUPPE").display = display.hidden;
//</ACRO_script>
//</AcroForm>

//<AcroForm>
//<ACRO_source>I:Annot1:MouseUp:Action1</ACRO_source>
//<ACRO_script>
/*********** gehört zu: AcroForm:I:Annot1:MouseUp:Action1 ***********/
this.getField("KOMBO").enabled == (event.target.value == "OFF");
//</ACRO_script>
//</AcroForm>

Acrobat X Javascript: Per Kontrollkästchen eine Gruppe deaktivieren

MurphysLaw
Beiträge gesamt: 588

27. Apr 2015, 17:19
Bewertung:

gelesen: 15627

Beitrag als Lesezeichen
Jahaaa. Wenn man's testen kann, geht's gleich leichter! :-)
==>readonly heißt der Knabe.

Und so geht's dann auch mit diesem simplen Einzeiler:
Code
this.getField("GRUPPE").readonly = (event.target.value == "Off"); 


;-)

Viele Grüße,
Murphy

________________________________________

Die letzte Stimme, die man hört, bevor die Welt explodiert, wird die Stimme eines Experten sein, der sagt: Das ist technisch unmöglich! (Sir Peter Ustinov)

Acrobat X Javascript: Per Kontrollkästchen eine Gruppe deaktivieren

sacrifice_87
Beiträge gesamt: 7

28. Apr 2015, 11:59
Bewertung:

gelesen: 15539

Beitrag als Lesezeichen
Vielen herzlichen Dank!
Mit dem "readonly" Hinweis habe ich es hinbekommen.
Jedoch habe ich dann gemerkt, dass wenn man zuvor die unteren Felder anklickt, diese aktiviert bleiben. Das würde dann über die "Endsumme" hinausgehen und da ich gerade am "Lernen" bin habe ich dann ausprobiert, ob ich die Felder von einem Kontrollkästchen aus aktivieren kann. Wenn ich so unverschämt sein darf, würde ich gerne noch hier eine Frage dazu äußern:

Ich habe das mit dem Befehl "checkThisBox" ausprobiert. Das hat auch gut geklappt, nur kann es sein, dass bei diesem Befehl die Gruppen nicht funktionieren? Oder muss ich die dann anders bezeichnen?

Auszug aus dem Code (leider kein Einzeiler):
Code
if (this.getField("FELD.I").value !=="OFF") 
getField("GROUPI.J").checkThisBox(0,true);
getField("GROUPI.K").checkThisBox(0,true);
getField("GROUPI.L").checkThisBox(0,true);
getField("GROUPI.M").checkThisBox(0,true);
getField("GROUPI.N").checkThisBox(0,true);
getField("GROUPI.O").checkThisBox(0,true);
getField("GROUPI.P").checkThisBox(0,true);


Bei "GROUPI" schreibt er keine Fehlermeldung, jedoch wählt er aber
auch kein anderes Kontrollkästchen aus.

Ebenso habe ich es leider nicht hinbekommen, dass die anderen Felder wieder deaktiviert werden, wenn das Kontrollkästchen wieder ausgeklickt wird. Hier habe ich versucht statt "0,true" ein "0,false" einzufügen, ebenso "1,false" nach "else"…eventuell habe ich hier noch nicht die richtige Quelle gefunden um nachzulesen? Beim Formular zurücksetzen klappt das dann allerdings super, das beim "readonly" nicht geklappt hat.

http://we.tl/JWIdensGFl
PDF Upload über wetransfer.com

PS. das mit dem simplen Einzeiler hab ich noch nicht so ganz raus… aber bin erst am Anfang mit dem "Try and Error"-Prinzip :) Vielen Dank hierfür für die Hilfe beim Lernen. Btw. hast du da eine

Acrobat X Javascript: Per Kontrollkästchen eine Gruppe deaktivieren

MurphysLaw
Beiträge gesamt: 588

28. Apr 2015, 12:29
Bewertung:

gelesen: 15531

Beitrag als Lesezeichen
Also eine Art "Toggle alle" Checkbox?
Hatte ja deine PDF noch. War kniffliger als gedacht, habe es letztendlich etwas krude gelöst, aber funktioniert:
Code
var felder=new Array("B","C","D","E","F","H"); 
if(event.target.value == "Off"){
for(i=0;i<6;i++){
var feld="GRUPPE.Feld" + felder[i];
this.getField(feld).checkThisBox(0, false);
}
}
else{
for(i=0;i<6;i++){
var feld="GRUPPE.Feld" + felder[i];
this.getField(feld).checkThisBox(0, true);
}
}
this.getField("GRUPPE").readonly = (event.target.value == "Off");


:-)

________________________________________

Die letzte Stimme, die man hört, bevor die Welt explodiert, wird die Stimme eines Experten sein, der sagt: Das ist technisch unmöglich! (Sir Peter Ustinov)

Acrobat X Javascript: Per Kontrollkästchen eine Gruppe deaktivieren

MurphysLaw
Beiträge gesamt: 588

28. Apr 2015, 13:22
Bewertung:

gelesen: 15506

Beitrag als Lesezeichen
Oh sh... Habe das "G" im Array vergessen! o_O

Code
var felder=new Array("B","C","D","E","F","G","H");  
if(event.target.value == "Off"){
for(i=0;i<7;i++){
var feld="GRUPPE.Feld" + felder[i];
this.getField(feld).checkThisBox(0, false);
}
}
else{
for(i=0;i<7;i++){
var feld="GRUPPE.Feld" + felder[i];
this.getField(feld).checkThisBox(0, true);
}
}
this.getField("GRUPPE").readonly = (event.target.value == "Off");


________________________________________

Die letzte Stimme, die man hört, bevor die Welt explodiert, wird die Stimme eines Experten sein, der sagt: Das ist technisch unmöglich! (Sir Peter Ustinov)

Acrobat X Javascript: Per Kontrollkästchen eine Gruppe deaktivieren

sacrifice_87
Beiträge gesamt: 7

28. Apr 2015, 13:38
Bewertung:

gelesen: 15504

Beitrag als Lesezeichen
Super vielen lieben Dank!
Jetzt weiss ich, wann ich Variablen verwenden kann :)

Einzig der Debugger zeigt mir jetzt noch eine Fehlermeldung an:
TypeError: this.getField(feld) is null
11:Field:Mouse Up

Da der Code aber funktioniert, kann man das einfach ignorieren?

Acrobat X Javascript: Per Kontrollkästchen eine Gruppe deaktivieren

MurphysLaw
Beiträge gesamt: 588

28. Apr 2015, 14:02
Bewertung: |||

gelesen: 15476

Beitrag als Lesezeichen
Könntest Du ignorieren. Keine Ahnung warum da ein Fehler kommt, sollte eigentlich passen.
Wenn's dich nervt, sollte das hier den Fehler beseitigen:
Code
var felder=new Array("B","C","D","E","F","G","H");   
if(event.target.value == "Off"){
for(i=0;i<7;i++){
try{
var feld="GRUPPE.Feld" + felder[i];
this.getField(feld).checkThisBox(0, false);
}
catch(e){
}
}
}
else{
for(i=0;i<7;i++){
try{
var feld="GRUPPE.Feld" + felder[i];
this.getField(feld).checkThisBox(0, true);
}
catch(e){
}
}
}
this.getField("GRUPPE").readonly = (event.target.value == "Off");


________________________________________

Die letzte Stimme, die man hört, bevor die Welt explodiert, wird die Stimme eines Experten sein, der sagt: Das ist technisch unmöglich! (Sir Peter Ustinov)

Acrobat X Javascript: Per Kontrollkästchen eine Gruppe deaktivieren

sacrifice_87
Beiträge gesamt: 7

28. Apr 2015, 14:12
Bewertung:

gelesen: 15469

Beitrag als Lesezeichen
Vielen lieben Dank für deine Mühen und die tollen Antworten. Hast mir sehr geholfen :)

Acrobat X Javascript: Per Kontrollkästchen eine Gruppe deaktivieren

kay84
Beiträge gesamt: 4

2. Sep 2019, 10:06
Bewertung:

gelesen: 10645

Beitrag als Lesezeichen
Hallo, ich habe ein ähnliches Problem. Leider habe ich gar keine Ahnung von Java oder von der herangehensweise...

Und zwar habe ich eine PDF mit 16 Check Boxen, wobei diese in 5 verschiedene Gruppen unterteilt sind, welche unabhänig von einander sind.

Für jede Gruppe würde ich gern sobald eine Checkbox ausgewählt wurde die anderen deaktivieren, bzw. falls wieder eine andere angewählt wird die anderen deaktivieren usw.

Meine Gruppe 1 besteht aus den den folgenden Checkboxen:

ChkBox
ChKBox2
ChKBox5
ChKBox7

Die Gruppe 2 besteht aus den folgenden Checkboxen:

ChKBox0
ChKBox1
ChKBox3
ChKBox4
ChKBox6
ChKBox8

Die Gruppe 3 besteht aus folgenden Checkboxen:

ChKBox9
ChKBox10

Die Gruppe 4 besteht aus folgenden Checkboxen:

ChKBox11
ChKBox12

Die Gruppe 5 besteht aus folgenden Checkboxen:

ChKBox13
ChKBox14

Kann mir vielleicht jemand mit meinem Problem weiterhelfen ?

Grüße Kay

(Dieser Beitrag wurde von kay84 am 2. Sep 2019, 10:12 geändert)

Acrobat X Javascript: Per Kontrollkästchen eine Gruppe deaktivieren

taunus11
Beiträge gesamt: 609

2. Sep 2019, 10:44
Bewertung:

gelesen: 10631

Beitrag als Lesezeichen
Man kann dafür einfach Gruppen von Optionsfeldern verwenden.

Acrobat X Javascript: Per Kontrollkästchen eine Gruppe deaktivieren

kay84
Beiträge gesamt: 4

2. Sep 2019, 10:54
Bewertung:

gelesen: 10627

Beitrag als Lesezeichen
Ich glaube, dass ich mich falsch ausgedrückt habe.

Also jede Gruppe soll unabhängig voneinander sein, also wenn ich bspw. in der Gruppe 1 die ChkBox 2 auswähle, sollen alle anderen Checkboxen der Gruppe 1 Gruppe deaktiviert werden.
Dies soll aber keine Auswirkungen auf die anderen Gruppen haben.

(Dieser Beitrag wurde von kay84 am 2. Sep 2019, 10:55 geändert)

Acrobat X Javascript: Per Kontrollkästchen eine Gruppe deaktivieren

taunus11
Beiträge gesamt: 609

2. Sep 2019, 11:22
Bewertung:

gelesen: 10618

Beitrag als Lesezeichen
Für jede Gruppe eine eigene Gruppe von Optionsfeldern verwenden.

Acrobat X Javascript: Per Kontrollkästchen eine Gruppe deaktivieren

kay84
Beiträge gesamt: 4

2. Sep 2019, 11:45
Bewertung:

gelesen: 10608

Beitrag als Lesezeichen
Ich habe leider überhaupt keine Ahnung, wie ich das ganze angehen soll.

Acrobat X Javascript: Per Kontrollkästchen eine Gruppe deaktivieren

taunus11
Beiträge gesamt: 609

2. Sep 2019, 12:33
Bewertung:

gelesen: 1965

Beitrag als Lesezeichen
Mehrere Optionsfelder mit gleichen Namen und unterschiedlichen Auswahlwerten ergeben eine Gruppe.

Acrobat X Javascript: Per Kontrollkästchen eine Gruppe deaktivieren

Thomas Richard
Beiträge gesamt: 19334

19. Sep 2019, 15:45
Bewertung:

gelesen: 1503

Beitrag als Lesezeichen
Dein Problem entsteht dadurch das als Checkboxen bei dir zu einer Gruppe gehören. Du musst sie je Gruppe aufteilen.

Aus
Zitat ChkBox
ChKBox2
ChKBox5
ChKBox7


Wird
ChkBoxA0
ChkBoxA1
ChkBoxA2
ChkBoxA3


Aus
Zitat Die Gruppe 2 besteht aus den folgenden Checkboxen:

ChKBox0
ChKBox1
ChKBox3
ChKBox4
ChKBox6
ChKBox8


wird:
ChkBoxB0
ChkBoxB1
ChkBoxB2
ChkBoxB3
ChkBoxB4
ChkBoxB5

...

...dann kann immer nur eine Option der jeweiligen Gruppe aktiviert werden, wenn es denn Felder vom Typ Optionsfeld sind und nicht vom Typ Kontrollkästchen (optisch kann man die identisch aussehen lassen, per default sind sie aber aus gutem Grund unterscheidbar).

Das ist eigentlich der einzige Unterscheid zwischen Kontrollkästchen und Optionsfeldern, bei ersterem können keins, eins oder mehrere einer Gruppe aktiv sein, bei letzterem gilt das Highlanderprinzip.


MfG

Thomas


Und wenn dir geholfen wurde, hilf uns, dies auch weiterhin zu können.
http://www.hilfdirselbst.ch/info/