Bit felder reagieren erst beim zweiten Mal [gelöst]

7. Juli 2010 16:33

Hi,

Ich habe in einem Formular eine Auflistung von Ländern, jeweils als eigene Chekbox die anzeigen sollen, aus welchen Ländern meine Projektpartner kommen.

zur einfacherern Auswahl habe ich mir "vorauswahlen" definiert, die nach Anklicken des entsprechenden Feldes auch die entsprechenden Länder auswählen sollen:
Z.b: Vorauswahl: EU => es werden die Checkboxen der EU-Länder angekreuzt.

Leider funktioniert das ganze nicht ganz so wie ich mir dass vorstelle, da man jede Vorauswahl zweimal anklicken muss um eine Reaktion bei anderen Feldern zu sehen.

Kann mir jemand helfen, hier die Code-Fragmente:
On-Load Formular:
crmForm.all.kbc_eu.onclick = function()
{
crmForm.all.kbc_eu.FireOnChange();
} //um das sofortige reagieren beim Anklicken zu erzwingen und nicht erst beim Verlassen der Checkbox

on_Change der "EU-Checkbox":
crmForm.all.kbc_eu.onclick = function() {
if( crmForm.all.kbc_eu.DataValue){
crmForm.all.kbc_belgien.DataValue = true;
crmForm.all.kbc_bulgarien.DataValue = true;
crmForm.all.kbc_dnemark.DataValue = true;
crmForm.all.kbc_deutschland.DataValue = true;
crmForm.all.kbc_estland.DataValue = true;
crmForm.all.kbc_finnland.DataValue = true;
crmForm.all.kbc_frankreich.DataValue = true;
crmForm.all.kbc_griechenland.DataValue = true;
crmForm.all.kbc_irland.DataValue = true;
crmForm.all.kbc_italien.DataValue = true;
crmForm.all.kbc_lettland.DataValue = true;
crmForm.all.kbc_litauen.DataValue = true;
crmForm.all.kbc_luxemburg.DataValue = true;
crmForm.all.kbc_malta.DataValue = true;
crmForm.all.kbc_niederlande.DataValue = true;
crmForm.all.kbc_sterreich.DataValue = true;
crmForm.all.kbc_polen.DataValue = true;
crmForm.all.kbc_portugal.DataValue = true;
crmForm.all.kbc_rumnien.DataValue = true;
crmForm.all.kbc_schweden.DataValue = true;
crmForm.all.kbc_slowakei.DataValue = true;
crmForm.all.kbc_slowenien.DataValue = true;
crmForm.all.kbc_spanien.DataValue = true;
crmForm.all.kbc_tschechien.DataValue = true;
crmForm.all.kbc_ungarn.DataValue = true;
crmForm.all.kbc_vereinigtesknigreich.DataValue = true;
crmForm.all.kbc_zypern.DataValue = true;
}
else{}}

Danke für unterstützung, ich hoffe ich habe mein Problem verständlich beschrieben.

Harry
Zuletzt geändert von Nerrischer am 3. August 2010 09:15, insgesamt 1-mal geändert.

Re: Bit felder reagieren erst beim zweiten Mal

10. Juli 2010 12:28

Hallo Harry,

hast du dir einmal diesen Artikel angesehen?

Re: Bit felder reagieren erst beim zweiten Mal

15. Juli 2010 23:19

Die Ursache deines Problems ist, dass das OnChange-Ereignis erst dann ausgelöst wird sobald das geänderte Feld den Fokus verliert.
Beim Anklicken einer Checkbox behält diese aber den Fokus. Erst bei einem Fokuswechsel wird dann OnChange gefeuert.

Re: Bit felder reagieren erst beim zweiten Mal

26. Juli 2010 16:38

Also:

@Michael Sulz: Ja die Artikel hab ich gelesen, dadurch bin ich erst so weit gekommen :-)

@ckeller: Problem ist leider nicht das Feuern, sondern etwas anderes.

Hier noch einmal eine "andere" Beschreibung des selben Problems:
Im Formular hab ich die verschiedenen checkboxen für die Bereiche, z. B. EU, Südamerika, Nordamerika

Nach Klicken EU ist das Feld zwar angeklickt, sonst passiert nichts; klicke ich danach Südamerika an ist auch das angeklickt, noch immer passiert nichts, klicke ich dann noch einmal EU ist das EU-Kasterl wieder leer, sonst keine Reaktion, dann noch einmal auf EU klicken => tataaaaaa sofort werden alle anderen Länder auch richtig gesetzt, ohne dass das Feld den Focus verlieren muss. (Selbe Reaktion bei den anderen "Vorauswahlen").

Ich muss das Feld also anklicken, wegklicken, noch einmal anklicken (erst dann passiert was passieren soll);
solange ich das Formular offen habe kann ich die Funktion dann beliebig oft "auslösen", nach Speichern und schließen des Formulars ist alles "vergessen" und bei nochmaligem Öffnen beginnt alles von vorne.

lg
Harry

Re: Bit felder reagieren erst beim zweiten Mal

28. Juli 2010 18:32

Du hast Deinen OnChange-Code zusätzlich in einem OnClick-Event verpackt. Entferne mal die erste und letzte Zeile von dem Code...

Code:
crmForm.all.kbc_eu.onclick = function() {
if( crmForm.all.kbc_eu.DataValue){
crmForm.all.kbc_belgien.DataValue = true;
crmForm.all.kbc_bulgarien.DataValue = true;
crmForm.all.kbc_dnemark.DataValue = true;
crmForm.all.kbc_deutschland.DataValue = true;
crmForm.all.kbc_estland.DataValue = true;
crmForm.all.kbc_finnland.DataValue = true;
crmForm.all.kbc_frankreich.DataValue = true;
crmForm.all.kbc_griechenland.DataValue = true;
crmForm.all.kbc_irland.DataValue = true;
crmForm.all.kbc_italien.DataValue = true;
crmForm.all.kbc_lettland.DataValue = true;
crmForm.all.kbc_litauen.DataValue = true;
crmForm.all.kbc_luxemburg.DataValue = true;
crmForm.all.kbc_malta.DataValue = true;
crmForm.all.kbc_niederlande.DataValue = true;
crmForm.all.kbc_sterreich.DataValue = true;
crmForm.all.kbc_polen.DataValue = true;
crmForm.all.kbc_portugal.DataValue = true;
crmForm.all.kbc_rumnien.DataValue = true;
crmForm.all.kbc_schweden.DataValue = true;
crmForm.all.kbc_slowakei.DataValue = true;
crmForm.all.kbc_slowenien.DataValue = true;
crmForm.all.kbc_spanien.DataValue = true;
crmForm.all.kbc_tschechien.DataValue = true;
crmForm.all.kbc_ungarn.DataValue = true;
crmForm.all.kbc_vereinigtesknigreich.DataValue = true;
crmForm.all.kbc_zypern.DataValue = true;
}
else{}}

Re: Bit felder reagieren erst beim zweiten Mal

30. Juli 2010 10:43

Hallo Harry, hat sich das Problem gelöst?

Re: Bit felder reagieren erst beim zweiten Mal

3. August 2010 09:14

Ja, hat sich gelöst, nachdem ich den gesamten Code vom On_Click Event - auch - in den On_Load Event kopiert habe.

lg
Harry