Numerisches Feld Begrenzungslinien

Grundsätzliche Themen zur Bedienung, Erstellung von Formularen, Datenbankanbindung und Beispiele ...
walde
Beiträge: 611
Registriert: 02.05.2008, 21:22

Numerisches Feld Begrenzungslinien

Beitrag von walde » 08.07.2010, 19:00

Hallo nele_sonntag,

 

Zu 1: Im Change Event des Feldes wird mit "xfa.event.newText" der Wert des Feldes zur Laufzeit ausgelesen. Mit "rawValue" kann der Wert nicht zur Laufzeit ausgelesen werden.

Zu 3: Das JavaScript Objekt "length" ist für einen String ausgelegt. Damit es funktioniert sollte das Objekt "String" mitverwendet werden.

Code: Alles auswählen

String(this.rawValue).length;
Im Change Event braucht man aber kein "String" vorzusetzen, wenn man mit "xfa.event.newText" arbeitet. Hierbei wurde der Wert noch nicht in eine Zahl umgewandelt.

Zu 4: Die Beispiele solletn wie Folgt aussehen:

Code: Alles auswählen

//nur Eingabe von DE und Zahlen erlaubt
if(xfa.event.newText.match(/[^0-9DE]/)){
 xfa.event.change = "";
}

//nur Eingabe von DE und Zahlen und Leerstellen erlaubt
if(xfa.event.newText.match(/[^0-9DEs]/)){
 xfa.event.change = "";
}

//nur Buchstaben erlaubt
if(!xfa.event.newText.match(/d/)){
 xfa.event.change = "";
}


//ebenso nur Buchstaben erlaubt

if(!xfa.event.newText.match(/[0-9]/)){
 xfa.event.change = "";
}
In Meinem Beispiel bedeutet bei

Code: Alles auswählen

xfa.event.newText.match(/D/)
ein "true" in der "if" Abfrage, dass ein nicht nummerischer Wert gefunden wurde. In diesem Fall wird die letzte Eingabe gelöscht.


Die Syntax

Code: Alles auswählen

xfa.event.newText.match(/d/)
bedeutet, dass man nach den Zeichen 0-9 sucht. Je nachdem, wie die "if" Abfrage dann lautet kann man die eingegebenen Zeichen zulassen oder eben vebieten.

Beispiel:

Code: Alles auswählen

//verbietet nur die Zeichen 0-9

if(xfa.event.newText.match(/d/)){

xfa.event.change = "";

 

//erlaubt nur die Zeichen 0-9

if(!xfa.event.newText.match(/d/)){

xfa.event.change = "";

}
 

Gruß,

 

Walde

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

Numerisches Feld Begrenzungslinien

Beitrag von nele_sonntag » 08.07.2010, 19:04

Hallo Walde,

lieben Dank wie immer an Sie.

Ich denke, durch Ihr ausführliches Erklären, komme ich wieder ein Stück weiter.

Herzliche Grüße aus dem mal wieder sehr heißen Frankfurt,

Mandy

blackfox
Beiträge: 21
Registriert: 03.08.2010, 13:20

Numerisches Feld Begrenzungslinien

Beitrag von blackfox » 24.08.2010, 16:38

Hallo,

ich möchte in einem Eingabefeld bestimmte Zeichen unterdrücken (z.B. Komma und "!" und "?"), andere Zeichen aber zulassen (z. B. "-").

Lässt sich das auch kürzer darstellen als so...

if((xfa.event.newText.match(/,/) != null || (xfa.event.newText.match(/!/) || (xfa.event.newText.match(/?/))

{xfa.event.change = "";}

?

Mit freundlichen Grüßen
blackfox

blackfox
Beiträge: 21
Registriert: 03.08.2010, 13:20

Numerisches Feld Begrenzungslinien

Beitrag von blackfox » 25.08.2010, 07:33

Hallo LCD Spezialisten,

ich hatte natürlich auch schon einige der oben genannten Beispielskripte ausprobiert, z. B. dieses

//ebenso nur Buchstaben erlaubt

if(!xfa.event.newText.match(/[0-9]/)){
 xfa.event.change = "";
}


Bei mir (Adobe Acrobat 9 Prof mit LCD 8.2.xxxx und Reader 9.1.1) verhält es sich so, dass als erstes Zeichen nur ein Buchstabe eingegeben werden kann, bei allen folgen den Zeichen jedoch kann jedes beliebige Zeichen eingegeben werden.
Das ist aber nicht das Ziel.

Wer hat den Durchblick? Wer kann helfen?

Mit freundlichen Grüßen
blackfox

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

Numerisches Feld Begrenzungslinien

Beitrag von nele_sonntag » 25.08.2010, 11:13

Hallo blackfox,

oben in dem Beispiel steht es doch schon.

Wenn Du bspw. nur die Buchstaben D und E in groß und Zahlen erlauben möchtest, lautet Dein Code im CHANGE-Event Deines Textfeldes so.

Code: Alles auswählen

//nur Eingabe von DE und Zahlen erlaubt
if(xfa.event.newText.match(/[^0-9DE]/)){
 xfa.event.change = "";
}
Mit dieser Syntax, wird alles außerhalb der eckigen Klammern verboten.

Es ist die Frage, ob Du mehr Zeichen hast, die Du erlaubst oder mehr, die Du verbietest. Dementsprechend würde ich mit der eckigen Klammer und [^] arbeiten oder ohne.

Jetzt müsstest Du nur noch mal googeln, wie die Expression für Javascript ist für ; . - usw.

LG Mandy

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

Numerisches Feld Begrenzungslinien

Beitrag von nele_sonntag » 25.08.2010, 12:17

Habs gefunden:

Code: Alles auswählen

//nur Eingabe von DE und Zahlen von 0 bis 3 und Punkt erlaubt
if(xfa.event.newText.match(/[^0-3DE\\.\\]/)){
 xfa.event.change = "";
}
Kannst Du ja dann entsprechend anpassen für Deine Bedürfnisse.

LG Mandy

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

Numerisches Feld Begrenzungslinien

Beitrag von nele_sonntag » 25.08.2010, 12:20

Ich nehm alles zurück. Mit - funktioniert dieser Syntax nicht :-)

Vielleicht schaffst Du es ja aus der EmailSyntax die richtige Schreibweise für andere Zeichen wie bspw. - herauszufinden:

Code: Alles auswählen

var r = new RegExp("^[a-z0-9_\-\.]+\@[a-z0-9_\-\.]+\.[a-z]{2,3}$"); // Create a new Regular Expression Object.
// Set the regular expression to look for  an email address in general form.

var result = r.test(this.rawValue); // Test the rawValue of the current object to see
                                    // if it fits the general form of an email address.

if (result == true) // If it fits the general form,
    true;            // all is well.
else                // Otherwise,
    false;            // fail the validation.

john61
Beiträge: 27
Registriert: 09.06.2009, 13:01

Numerisches Feld Begrenzungslinien

Beitrag von john61 » 25.08.2010, 13:08

Hallo nele_sonntag, hallo blackfox,

vielleicht kann ich helfen.

Also \W bzw. ^\w steht für ein Zeichen, das weder Buchstabe noch Zahl noch Unterstricht ist.

Damit könnte das von blackfox gesuchte Skript so aussehen

if(xfa.event.newText.match(/[^\w\-]/)
{
xfa.event.change = "";
}

Gruß
john61

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

Numerisches Feld Begrenzungslinien

Beitrag von nele_sonntag » 25.08.2010, 13:14

Suuuper!!
Danke Dir. Das würde dann also alle Zeichen, wie
, . - ; : | ! ? / \ betreffen?

Werd ich gleich auch noch versuchen.

Danke Dir, Mandy

john61
Beiträge: 27
Registriert: 09.06.2009, 13:01

Numerisches Feld Begrenzungslinien

Beitrag von john61 » 25.08.2010, 13:14

Sollte der Unterstrich auch noch ausgeschlossen werden, kann man das auch so lösen

Damit könnte das von blackfox gesuchte Skript so aussehen

if((xfa.event.newText.match(/[^\w\-]/) || (xfa.event.newText.match(/[\_]/)))
{
xfa.event.change = "";
}


Gruß
john61

PS: Ich sehe gerade, dass im in meinem vorigen Beitrag zwei \ fehlen
      (vor dem w und vor dem - ).

Antworten