Textfelder so formatieren, dass Sonderzeichen nicht erlaubt sind

Grundsätzliche Themen zur Bedienung, Erstellung von Formularen, Datenbankanbindung und Beispiele ...
Elli
Beiträge: 21
Registriert: 24.02.2011, 07:37

Textfelder so formatieren, dass Sonderzeichen nicht erlaubt sind

Beitrag von Elli » 06.08.2012, 14:41

Hallo zusammen,

Ich möchte ein Textfeld so formatieren, dass Sonderzeichen nicht erlaubt sind. Hintergrund: der Inhalt des Feldes wird in eine Datenbank geschrieben, die nicht mit allen Sonderzeichen zurecht kommt. Deshalb möchte ich diese Bereits bei der Eingabe oder der Validierung verbieten.

Gibt es da eine Möglichkeit?

Vielen Dank und Gruß

Elli

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

Textfelder so formatieren, dass Sonderzeichen nicht erlaubt sind

Beitrag von radzmar » 06.08.2012, 18:26

Hi,

das kann man mit regulären Ausdrücken ganz gezielt steuern.
Um nur Buchstaben, Zahlen und Leerzeichen zu erlauben, kann man dieses Skript im change Event des Feldes einsetzen.

Code: Alles auswählen

if (!xfa.event.change.match(/[a-zA-Z0-9\s]/g)) {
	xfa.event.change = "";
}

Elli
Beiträge: 21
Registriert: 24.02.2011, 07:37

Textfelder so formatieren, dass Sonderzeichen nicht erlaubt sind

Beitrag von Elli » 07.08.2012, 07:55

Guten Morgen radzmar,
super, vielen Dank für Deinen Tipp. Leider sind jetzt alle Sonderzeichen erlaubt, aber nicht a-z, A-Z und 0-9. Aber dann "zäumen" wir das "Pferd" von hinten auf und verbieten so viele Sonderzeichen wie möglich.
Danke und Gruß
Anja

Elli
Beiträge: 21
Registriert: 24.02.2011, 07:37

Textfelder so formatieren, dass Sonderzeichen nicht erlaubt sind

Beitrag von Elli » 07.08.2012, 08:05

Gefunden!!!

Code: Alles auswählen

if (!xfa.event.change.match(/[^a-zA-Z0-9\s]/g)) {
xfa.event.change = "";
}
mit einem ^davor geht es. Hab vielen Dank!
Elli

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

Textfelder so formatieren, dass Sonderzeichen nicht erlaubt sind

Beitrag von radzmar » 07.08.2012, 08:21

Schön dass das bei dir klappt, verstehen tue ich das aber nicht.
Das ^ negiert doch die Gruppierung, wie schon das ! ganz am Anfang.
Mein Beispiel prüft, ob die aktuelle Eingabe nicht zu der Zeichengruppierung passt.
Falls dem so ist, wird die Eingabe durch "" ersetzt.
^ und ! zusammen in einer Prüfung heben sich ja gegenseitig auf, demnach würde ...

Code: Alles auswählen

if (!xfa.event.change.match(/[^a-zA-Z0-9\s]/g)) {
xfa.event.change = "";
}
... genauso a-zA-Z0-9\s verbieten wie ...

Code: Alles auswählen

if (xfa.event.change.match(/[a-zA-Z0-9\s]/g)) {
xfa.event.change = "";
}

Elli
Beiträge: 21
Registriert: 24.02.2011, 07:37

Textfelder so formatieren, dass Sonderzeichen nicht erlaubt sind

Beitrag von Elli » 09.08.2012, 07:34

Guten Morgen radzmar,
natürlich hattest Du recht!!! Wer kopieren kann, ist klar im Vorteil. Ich hatte das "!" vergessen. Jetzt funktioniert alles richtig gut.
Dankeschön
Elli

Elli
Beiträge: 21
Registriert: 24.02.2011, 07:37

Textfelder so formatieren, dass Sonderzeichen nicht erlaubt sind

Beitrag von Elli » 09.08.2012, 09:50

Hallo radzmar,

es funktioniert schon ziemlich klasse. Kannst Du mir aber vielleicht noch einen Tipp geben, wie ich die Backspace-Taste (glaube sie heißt so: löschen von links nach rechts) und die Entf-Taste noch zulassen kann? Was ich gefunden habe, war \b, aber irgendwie funktioniert es nicht

Danke und viele Grüße

Elli

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

Textfelder so formatieren, dass Sonderzeichen nicht erlaubt sind

Beitrag von radzmar » 09.08.2012, 13:38

\b steht für Word Boundary, also Wortgrenze.
Als Backspace wird es nur erkannt, wenn es in eckige Klammern gestellt wird, also [\b].
Ich weiß aber nicht, ob das in PDF's funktioniert, den die Fähigkeiten von Acrobat's JavaScript sind in manchen Dingen eingeschränkt, wenn es um reguläre Ausdrücke geht.

Elli
Beiträge: 21
Registriert: 24.02.2011, 07:37

Textfelder so formatieren, dass Sonderzeichen nicht erlaubt sind

Beitrag von Elli » 09.08.2012, 14:44

Du bist ein Schatz - danke für Deine Antwort. Mit etwas Probieren habe ich es hinbekommen:

Code: Alles auswählen

if (!xfa.event.change.match(/[a-zA-Z0-9s]/g\b))
Ging auch ohne [ ]

Viele Grüße

Elli

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

Textfelder so formatieren, dass Sonderzeichen nicht erlaubt sind

Beitrag von Merklin » 16.08.2012, 21:24

Hallo Elli,

bei welchen Event, hast du das Script eingefügt?

Bekomme immer eine Fehlermeldung.


VG Merklin


Antworten