Seite 1 von 2

eigene Funktion schreiben

Verfasst: 26.01.2010, 09:26
von nele_sonntag
Guten Morgen Ihr Lieben,

habe ein Problem :-(

Möchte mehrere Felder mit dem gleichen Skript überprüfen. Habe bisher immer die gleiche "IF-Abfrage" in das "EXIT-Ereignis" jedes Feldes geschrieben.

[suB]if(this.rawValue.length > 4){
    xfa.host.messageBox("Bitte nur vier Zeichen eingeben!", "Hinweis", 3, 1);
    this.rawValue = "";
}else{
}[/suB]

Nicht besonders professionell, da man dieses ja auch mit einer Funktion lösen kann.

Ich habe ein neues Skriptobjekt erzeugt und folgenden Code hinterlegt:

[suB]function feld_checken(){
    if(this.rawValue.length > 4){
        xfa.host.messageBox("Bitte nur vier Zeichen eingeben!", "Hinweis", 3, 1);
        this.rawValue = "";
    }else{
    }
}[/suB]

Leider funktioniert es bei mir nicht. Hat jemand eine Idee, wo der Fehler liegt? Zuhause arbeite ich mit LCD 8, das hochgeladene PDF wurde eben auf der Arbeit mit dem LCD 7 erzeugt.

Vielen Dank für Eure Hilfe,
liebe Grüße Mandy

eigene Funktion schreiben

Verfasst: 26.01.2010, 12:29
von Elminster
[sub]Hallo nele,

funktioniert nur probier es mal mit folgender Syntax in den Scripts.

function feld_checken()
{
    if(this.rawValue.length > 4) then      // raw.Value nicht nötig.
        xfa.host.messageBox("Bitte nur vier Zeichen eingeben!", "Hinweis", 3, 1);
        this.rawValue = "";
    endif
}

Gruß
Elminster
[/sub]

eigene Funktion schreiben

Verfasst: 26.01.2010, 13:32
von nele_sonntag
Ok, dann schaue ich gleich mal.

Bei mir funktionieren nur die ersten beiden Textfelder, wo das Skript direkt im "Exit-Ereignis" liegt. Bei den letzten beiden funktioniert bei mir gar nichts. Und das geht bei Dir auch??

eigene Funktion schreiben

Verfasst: 26.01.2010, 13:39
von Elminster
Ersten beiden funktionieren!

Bei den beiden anderen, möchtest DU den Quellcode ja nur Outsourcen :)

Bei welcher Aktion Du diese aufrufen möchtest weiss ich nicht, habe sie ebenfalls auf Exit gelassen, also wenn Du das Feld verlässt.

Der Quellcode für die Funktion (wie gepostet), klappt bei mir.

Gruß
Elminster

eigene Funktion schreiben

Verfasst: 26.01.2010, 13:55
von nele_sonntag
Ja, ich möchte tatsächlich nur "outsourcen", aber gerade das funktioniert ja nicht oder gibt er bei Dir bei den zwei unteren Feldern eine Meldung aus, wenn Du mehr als vier Zeichen eingibst? Bei mir macht er gar nix und lässt mich einfach gewähren.

LG Mandy

PS: Auch das "outgesourcte" Skript soll reagieren, wenn ich das Feld verlasse, also im "Exit-Ereignis" oder wäre auch hier etwas anderes sinnvoller?


eigene Funktion schreiben

Verfasst: 26.01.2010, 14:27
von Elminster
Die Syntax hast Du aber geändert ja? Wie oben?

Also bei mir meldet der dann, dass ich nicht mehr als 4 Zeichen eingeben darf und setzt das Feld auf null zurück.... wie im Script beschrieben!!

Poste doch nochmal ein überarbeitetes Script.

LG

eigene Funktion schreiben

Verfasst: 26.01.2010, 14:58
von nele_sonntag
Es passiert leider NIX.

1. und 2. Textfeld (hier steht das Skript im EXIT-Ereignis des Textfeldes) wird eine Meldung ausgegeben.

3. und 4. Textfeld (hier wird die Funktion [suB][suP]"eig_funktionen.feld_checken();"[/suP][/suB] , die ich im Skriptobjekt (eig_funktionen) definiert habe aufgerufen. Aber es tut sich nix. Habe auch wie von Dir beschrieben nach dem "this" das "rawValue" weggelassen, aber es geht trotzdem nicht.

Noch eine andere Idee?

LG Mandy

eigene Funktion schreiben

Verfasst: 26.01.2010, 15:15
von Elminster
Ah ok i see....

Versuch mal den Funktionsaufruf mit dem Parameter des Feldes.

eig_funktionen.feld_checken(Seite1.TextField1);

bei Dir ist Seite1 unbenanntes Formularfeld oder so.

eigene Funktion schreiben

Verfasst: 27.01.2010, 11:17
von nele_sonntag
Hallösche Elminster,

vielen Dank für Dein Engagement, aber leider war's das auch nicht :-(((

Hast Du oder jemand anderes noch eine Idee??

Danke,
Mandy

eigene Funktion schreiben

Verfasst: 27.01.2010, 11:47
von Elminster
Hi Nele, gern geschehen sorry das es nicht geklappt hat!!

Anbei aber nochmal meine Datei, die bei mir einwandfrei klappt kannste ja nochmal vergleichen ich glaub nit das unser LCD so verschieden iss! :)