Java Script im Formular

Die Möglichkeiten und Tücken von Formularen
skrause_de
Beiträge: 7
Registriert: 08.01.2014, 16:00

Java Script im Formular

Beitrag von skrause_de » 08.01.2014, 16:13

Hallo alle miteinander.
Ich programmiere sonst nicht mit Java sondern mit anderen Sprachen und bin in Java aus der Übung gekommen.
nun muss ich in einem Adobe 11 Formular aber eine Validierung vornehmen.

Also ich habe eine Feld mit einer Dropdown Auswahl von Artikel-Nummern. Mit Hilfe des ausgewählten Wertes im Dropdownfeld sollen nun in anderen Feldern bestimmte Werte eingetragen werden. Habe auch schon ein wenig rumgestöbert und so einige s gefunden nur funktioniert das leider noch nicht was mache ich den da falsch.

Das Java Script das ich bis jetzt probiert habe sieht so aus:

var Article = this.getField("Article-No1").value;


if (Article == '310-230001')
{
this.getField("Description1").value = 'IPC - HIT Designbelag Eiche gekalkt';
}

else
{
if (Article == '310-230002')
{
this.getField("Description1").value = 'IPC - HIT Designbelag Eiche naturell';
}

else
{
if (Article == '310-230003')
{
this.getField("Description1").value = 'IPC - HIT Designbelag Nussbaum Rustikal';


}

else
{
if (Article == '310-230004')
{
this.getField("Description1").value = 'IPC - HIT Designbelag xxxx';
}
};
}}

Wer kann mir da weiterhelfen, was mache ich falsch, muss ich in den Attributen des Feldes noch etwas zusätzlich einstellen?

Benutzeravatar
radzmar
Beiträge: 962
Registriert: 26.10.2011, 10:18

Java Script im Formular

Beitrag von radzmar » 08.01.2014, 19:11

Bei Abfragen mit mehrere Bedingungen solltest Du immer mit der Switch-Methode arbeiten.

Code: Alles auswählen

var Article = this.getField("Article-No1").value;

switch (Article) {
	case "310-230001" : this.getField("Description1").value = 'IPC - HIT Designbelag Eiche gekalkt'; break;
	case "310-230002" : this.getField("Description1").value = 'IPC - HIT Designbelag Eiche naturell'; break;
	case "310-230003" : this.getField("Description1").value = 'IPC - HIT Designbelag Nussbaum Rustikal'; break;
	case "310-230004" : this.getField("Description1").value = 'IPC - HIT Designbelag xxxx'; break;
	default: this.getField("Description1").value = ""; break;
}

Benutzeravatar
nele_sonntag
Beiträge: 2742
Registriert: 04.05.2009, 15:12
Wohnort: Frankfurt
Kontaktdaten:

Java Script im Formular

Beitrag von nele_sonntag » 08.01.2014, 19:15

Uiiihhh...radzmar war schneller. ;-)

Hallo skrause_de,

ich selbst arbeite nicht mit dem Acrobat, allerdings - und das dürfte auch im Acrobat gleich sein ;-) stimmt die Syntax für die IF-ELSE-Verzweigung nicht.

Code: Alles auswählen

if(Bedingung 1){
        Anweisungsblock 1;
}
else if(Bedingung 2)
{
        Anweisungsblock 2;
        ....
}
else{
        (optional)Default Anweisungsblock;}
http://www.w3schools.com/js/js_if_else.asp

LG Mandy

skrause_de
Beiträge: 7
Registriert: 08.01.2014, 16:00

Java Script im Formular

Beitrag von skrause_de » 08.01.2014, 19:51

Hi radzmar,

Danke jetzt funktioniert es wusste nicht das ich die in dem Feld eintragen muss wo die Dropdown Auswahl ist.

Ist es möglich auch mehrere Felder zu füllen und nicht nur ein Feld von der Artikel Nummer sind noch einige andere Daten abhängig die in die Tabelle eingetragen werden müssen in jeder Zeile 5 Felder mit Unterschiedlichen Werten.

Vielen Dank für deine Hilfe

Benutzeravatar
radzmar
Beiträge: 962
Registriert: 26.10.2011, 10:18

Java Script im Formular

Beitrag von radzmar » 08.01.2014, 20:01

Geht auch, dafür würde sich die Switch-Methode in Kombination mit einer Funktion anbieten.

Code: Alles auswählen

function populateFields (value1, value2, value3) {
	this.getField("Description1").value = value1;
	this.getField("Description2").value = value2;
	this.getField("Description3").value = value3;
}

var Article = this.getField("Article-No1").value;

switch (Article) {
	case "310-230001" : populateFields ("IPC - HIT Designbelag Eiche gekalkt", "Lorem Ipsum", "124,99"); break;
	case "310-230002" : populateFields ("IPC - HIT Designbelag Eiche naturell", "Dolor Sit Amet", "89,99"); break;
	case "310-230003" : populateFields ("IPC - HIT Designbelag Nussbaum Rustikal", "Bla Bla Bla", "299,99"); break;
	case "310-230004" : populateFields ("IPC - HIT Designbelag xxxx", "xxxxx", "999,99"); break;
	default: populateFields ("", "", "0,00"); break;
}

skrause_de
Beiträge: 7
Registriert: 08.01.2014, 16:00

Java Script im Formular

Beitrag von skrause_de » 08.01.2014, 20:12

Klasse danke für die rasche Antwort.

Habe die andere Methode auch schon Ausprobiert. Funktionier gut nur ein Fehler habe ich noch.
die Werte die bei 310-230001 kommen sollen kommen bei dem Artikel 310-230001 und bei Artikel 310-230001 kommt nichts. Hier mal den Code den ich bis jetzt probiert habe.

var Article = this.getField("Article-No1").value;

switch (Article) {
case "310-230001" : this.getField("Description1").value = 'IPC - HIT Designbelag Eiche gekalkt'; this.getField("Plank/Pack1").value = '16'; this.getField("Size/Measurments1").value = '2.0x187x1227mm'; this.getField("Thickness1").value = '0.3mm'; this.getField("m2/Pack1").value = '4.589'; break;
case "310-230002" : this.getField("Description1").value = 'IPC - HIT Designbelag Eiche naturell'; break;
case "310-230003" : this.getField("Description1").value = 'IPC - HIT Designbelag Nussbaum Rustikal'; break;
case "310-230004" : this.getField("Description1").value = 'IPC - HIT Designbelag xxxx'; break;
default: this.getField("Description1").value = ""; break;
}

Witzig ist das alle Werte die hinter dem Artikel 310-230001 stehen und zugewiesen werden in den richtigen Feldern landen aber nur wenn ich den Artikel 310-230002 auswähle.

Eine Idee woran das liegen könnte.
Ich glaube ich muss meine Javascript Kenntnisse mal dieser auffrischen.

Benutzeravatar
radzmar
Beiträge: 962
Registriert: 26.10.2011, 10:18

Java Script im Formular

Beitrag von radzmar » 08.01.2014, 22:04

So wie Du das schreibst, funktioniert das nicht.
Die switch-Methode ist nich dafür ausgelegt, mehrere Bedingungen in einem case-Teil zu berarbeiten, daher mein Vorschlag einfach eine Funktion aufzurufen, die das dann macht.

Der Teil populateFields ("IPC - HIT Designbelag Eiche gekalkt", "Lorem Ipsum", "124,99") ruft die Funktion auf und übergibt 3, durch Kommas getrennte, Werte an diese.
Die Funktion weist dann dem jeweiligen Feld einen der Werte zu.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

skrause_de
Beiträge: 7
Registriert: 08.01.2014, 16:00

Java Script im Formular

Beitrag von skrause_de » 09.01.2014, 08:12

Hi radzmar,
Habe das gestern Nacht und heute Morgen noch weiter getestet auch den Code den du mir zuletzt gesendet hast.

Irgendwo muss da noch eine Fehler sein. Wenn ich den Artikel 310-230001 auswähle erscheint eine leere Zeile.
Bei dem Artikel 310-230002 erscheinen dann die Werte vom Artikel 310-230001. leider ist das aber nicht durchgängig sondern gerade bei dem Artikel 310-255105 erscheinen die Werte vom 310-230006. Das ganze durcheinander macht mein Verständnis von Javescript nicht gerade besser.

Hast du eine Idee wo der Fehler liegen könnte hat das was mit der Reihenfolge in der ich die werte in das Feld eingegeben habe zu tun?
Glaube ich aber nicht da ich die auch schon einmal gelöscht habe und dann manuell eingegeben habe.

Hier mal anbei den aktuellen Code den ich verwende.

function populateFields (value1, value2, value3, value4, value5) {
this.getField("Description1").value = value1;
this.getField("Plank/Pack1").value = value2;
this.getField("Size/Measurments1").value = value3;
this.getField("Thickness1").value = value4;
this.getField("m2/Pack1").value = value5;

}

var Article = this.getField("Article-No1").value;

switch (Article) {
case "310-230001" : populateFields ("IPC - Hit Designbelag Eiche gekalkt", "20", "2,0x187x1227mm", "0,3mm", "4,589"); break;
case "310-230002" : populateFields ("IPC - Hit Designbelag Eiche naturell", "20", "2,0x187x1227mm", "0,3mm", "4,589"); break;
case "310-230003" : populateFields ("IPC - Hit Designbelag Nussbaum Rustikal", "20", "2,0x187x1227mm", "0,3mm", "4,589"); break;
case "310-230004" : populateFields ("IPC - Hit Designbelag Fichte Altholz braun", "20", "2,0x187x1227mm", "0,3mm", "4,589"); break;
case "310-230005" : populateFields ("IPC - Hit Designbelag Fichte Altholz beige", "20", "2,0x187x1227mm", "0,3mm", "4,589"); break;
case "310-230006" : populateFields ("IPC - Hit Designbelag Fichte Altholz grau", "20", "2,0x187x1227mm", "0,3mm", "4,589"); break;
case "310-230007" : populateFields ("IPC - Hit Designbelag Eiche silbergau", "20", "2,0x187x1227mm", "0,3mm", "4,589"); break;
case "310-230008" : populateFields ("IPC - Hit Designbelag Eiche creme", "20", "2,0x187x1227mm", "0,3mm", "4,589"); break;
case "310-230009" : populateFields ("IPC - Hit Designbelag Eiche kiesel", "20", "2,0x187x1227mm", "0,3mm", "4,589"); break;
case "310-230010" : populateFields ("IPC - Hit Designbelag Lärche", "20", "2,0x187x1227mm", "0,3mm", "4,589"); break;
case "310-255101" : populateFields ("IPC - Opal Designbelag Eiche grau", "16", "2,5x187x1227mm", "0,55mm", "3,671"); break;
case "310-255102" : populateFields ("IPC - Opal Designbelag Eiche düne", "16", "2,5x187x1227mm", "0,55mm", "3,671"); break;
case "310-255103" : populateFields ("IPC - Opal Designbelag Eiche rustikal", "16", "2,5x187x1227mm", "0,55mm", "3,671"); break;
case "310-255104" : populateFields ("IPC - Opal Designbelag Eiche braun", "16", "2,5x187x1227mm", "0,55mm", "3,671"); break;
case "310-255105" : populateFields ("IPC - Opal Designbelag Eiche sand", "16", "2,5x187x1227mm", "0,55mm", "3,671"); break;
case "310-255107" : populateFields ("IPC - Opal Designbelag Fichte Altholz caramel", "16", "2,5x187x1227mm", "0,55mm", "3,671"); break;
case "310-255108" : populateFields ("IPC - Opal Designbelag Eiche sand", "16", "2,5x187x1227mm", "0,55mm", "3,671"); break;
case "310-255109" : populateFields ("IPC - Opal Designbelag Eiche coffee", "16", "2,5x187x1227mm", "0,55mm", "3,671"); break;
case "310-255301" : populateFields ("IPC - Rubin Designbelag Eiche nebel", "16", "2,5x187x1227mm", "0,55mm", "3,671"); break;
case "310-255302" : populateFields ("IPC - Rubin Designbelag Eiche beige", "16", "2,5x187x1227mm", "0,55mm", "3,671"); break;
case "310-255303" : populateFields ("IPC - Rubin Designbelag Eiche anthrazit", "16", "2,5x187x1227mm", "0,55mm", "3,671"); break;
case "310-255305" : populateFields ("IPC - Rubin Designbelag Fichte Altholz kupfer", "16", "2,5x187x1227mm", "0,55mm", "3,671"); break;
case "310-255306" : populateFields ("IPC - Rubin Designbelag Fichte Altholz sandgrau", "16", "2,5x187x1227mm", "0,55mm", "3,671"); break;
case "310-255307" : populateFields ("IPC - Rubin Designbelag Fichte Altholz havanna", "16", "2,5x187x1227mm", "0,55mm", "3,671"); break;
case "310-255308" : populateFields ("IPC - Rubin Designbelag Eiche hellbeige", "16", "2,5x187x1227mm", "0,55mm", "3,671"); break;
case "310-430101" : populateFields ("IPC - Rubin Designbelag Eiche gekalkt", "8", "4,2x180x1220mm", "0,3mm", "1,757"); break;
case "310-430102" : populateFields ("IPC - Rubin Designbelag Eiche naturell", "8", "4,2x180x1220mm", "0,3mm", "1,757"); break;
case "310-430103" : populateFields ("IPC - Rubin Designbelag Nussbaum rustikal", "8", "4,2x180x1220mm", "0,3mm", "1,757"); break;
case "310-430104" : populateFields ("IPC - Rubin Designbelag Fichte Altholz braun", "8", "4,2x180x1220mm", "0,3mm", "1,757"); break;
case "310-430105" : populateFields ("IPC - Rubin Designbelag Fichte Altholz beige", "8", "4,2x180x1220mm", "0,3mm", "1,757"); break;
case "310-430106" : populateFields ("IPC - Rubin Designbelag Fichte Altholz grau", "8", "4,2x180x1220mm", "0,3mm", "1,757"); break;
case "310-430107" : populateFields ("IPC - Rubin Designbelag Eiche grau", "8", "4,2x180x1220mm", "0,3mm", "1,757"); break;
case "310-430109" : populateFields ("IPC - Rubin Designbelag Eiche düne", "8", "4,2x180x1220mm", "0,3mm", "1,757"); break;
case "310-430110" : populateFields ("IPC - Rubin Designbelag Eiche sand", "8", "4,2x180x1220mm", "0,3mm", "1,757"); break;
case "310-430111" : populateFields ("IPC - Rubin Designbelag Eiche silbergrau", "8", "4,2x180x1220mm", "0,3mm", "1,757"); break;
case "310-430112" : populateFields ("IPC - Rubin Designbelag Eiche creme", "8", "4,2x180x1220mm", "0,3mm", "1,757"); break;
case "310-430113" : populateFields ("IPC - Rubin Designbelag Eiche kiesel", "8", "4,2x180x1220mm", "0,3mm", "1,757"); break;
case "310-430114" : populateFields ("IPC - Rubin Designbelag Lärche", "8", "4,2x180x1220mm", "0,3mm", "1,757"); break;
default: populateFields ("", "", "", "", ""); break;
}

Tips und Anregungen sind willkommen.

skrause_de
Beiträge: 7
Registriert: 08.01.2014, 16:00

Java Script im Formular

Beitrag von skrause_de » 09.01.2014, 11:55

Hi radzmar,

Ich habe dir hier mal das PDF angehangen damit du mal sehen kannst was da passiert. ist total doof. Es kommen immer falsche werte und wenn du z.b. erst die 310-230002 auswählst, kommen die werte von der 310-230001 wenn du nun die 310-230009 auswählst kommen die werte von der 310-230008, jetzt wieder die 310-230002 auswählen und es kommen die Werte der 310-230009.

Bin mit meinem Latein am ende.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Benutzeravatar
Merklin
Beiträge: 1857
Registriert: 04.04.2009, 17:03

Java Script im Formular

Beitrag von Merklin » 10.01.2014, 00:27

Hallo,

wenn du dir mal radzmar sein Beispiel runter geladen hättest, dann hättest du auch sicherlich deinen Fehler bemerkt.
Mehr sage ich dazu nicht.

VG Merklin

Antworten