BLZ formatieren

Die Möglichkeiten und Tücken von Formularen
Antworten
FrogThomas
Beiträge: 3
Registriert: 10.05.2013, 06:52

BLZ formatieren

Beitrag von FrogThomas » 04.06.2013, 13:55

Hallo,

ich erfasse in einem Textfeld eine Bankleitzahl. Nun suche ich nach einer Lösung um:
  1. Die BLZ nachdem diese eingegeben wurde, korrekt zu gruppieren (Die Bankleitzahl wird in zwei Dreierblöcken und einem Zweierblock (z. B. 390 601 90) geschrieben Wikipedia)
  2. In dem Feld sollen sich ausschließlich Ziffern eingeben lassen
  3. Für einen gültigen Wert müssen exakt 8 Ziffern eingegeben werden
Den ersten Punkt konnte ich schon mit folgendem benutzerdefinierten Formatierungsskript erledigen:

Code: Alles auswählen

re8Digit = /^(\d{3})(\d{3})(\d{2})$/

if (re8Digit.test(event.value))
    event.value = RegExp.$1 + " " + RegExp.$2 + " " + RegExp.$3
Damit habe ich mir aber die Möglichkeit genommen das Format auf Zahlen festzulegen und damit wiederum habe ich das Problem, dass bei der Validierung der Bereich für den Feldwert nicht angeben werden kann.

Noch eine Frage am Rande: Ist es "normal", dass die Größe einer Pdf-Datei, in dem Moment in dem diese zu einem Pdf-Formular wird, von 32 KB auf 485 KB wächst?
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

FrogThomas
Beiträge: 3
Registriert: 10.05.2013, 06:52

BLZ formatieren

Beitrag von FrogThomas » 05.06.2013, 07:51

FrogThomas hat geschrieben:Noch eine Frage am Rande: Ist es "normal", dass die Größe einer Pdf-Datei, in dem Moment in dem diese zu einem Pdf-Formular wird, von 32 KB auf 485 KB wächst?
Den letzten Teil meiner Frage konnte ich mir gerade selbst beantworten ...
Hintergrund für die große Dateigröße ist die eingestellte Schriftart für den Text im Textfeld. Solange die Schriftart auf den Standard (Helvetica) eingestellt bleibt, liegt die resultierende Dateigröße unter 40 KB. Wird die Schriftart aber (wie in meinem Beispiel) auf Arial eingestellt, gewinnt die Datei an Größe.

Helvetica gehört vermutlich zum Standard-Umfang von Adobe Acrobat und muss insofern nicht extra in das Dokument eingebunden werden. Anders verhält es sich bei der Schriftart "Arial", diese muss dem Dokument extra angehängt werden.

Übrigens: In den Datei-Eigenschaften in der Registerkarte "Schriften" taucht der Eintrag für Arial erst dann auf, wenn mindestens ein Textfeld mit der entsprechend eingestellten Schriftart, einen Wert enthält.

FrogThomas
Beiträge: 3
Registriert: 10.05.2013, 06:52

BLZ formatieren

Beitrag von FrogThomas » 06.06.2013, 09:38

Mittlerweile habe ich nun auch das eigentliche Problem lösen können. Am meisten dabei geholfen hat vermutlich dieser Thread und da ganz besonder der Beitrag von Merklin mitsamt seiner wunderbaren Datei "FormattingExamples.pdf". Schließlich stand mir dann auch noch Wikipedia mit dem Eintrag Regulärer Ausdruck zur Seite.

Code: Alles auswählen

if (event.willCommit) {
  // Final value checking:
  // Diese Überprüfung wird vor der endgültigen Bestätigung des eingegebenen Wertes vorgenommen. Hierbei wird noch mal sichergestellt, dass es sich bei der Eingabe ausschließlich um Ziffern handelt, welche in der Gruppierung 3, 3, 2 angeordnet und jeweils durch ein Leerzeichen voneinander getrennt sind.
  event.rc = /^[\d]{3} [\d]{3} [\d]{2}$/.test(event.value);
}
else {
  // Keystroke-level checking:
  // Diese Überprüfung wird nach jedem Tastendruck vorgenommmen. Die ersten zwei "If" und "Else If"-Abfragen dienen dazu, die Ziffern bereits während der Eingabe  zu gruppieren. Dazu wird zunächst die erste vollständige Dreiergruppe und danach die Zweite jeweils durch ein Leerzeichen von allen noch folgenden Eingaben abgetrennt.
  if(/^\d{3}$/.test(event.value) && event.selStart == 3) {
    event.change = " " + event.change;
  }
  else if(/^\d{3} \d{3}$/.test(event.value) && event.selStart == 7) {
    event.change = " " + event.change;
  }
  // Im Anschluss wird die Variable strTest gebildet. Diese entspricht dem im Textfeld bereits eingezeigten Wert + der zuletzt vorgenommenen Eingabe. Somit lässt sich schrittweise nach jeder Eingabe erneut die Korrektheit der gesamten, bisher vorgenommenen Eingabe, überprüfen.
  var aRslt = event.value.split("");
  aRslt.splice(event.selStart, event.selEnd - event.selStart, event.change);
  var strTest = aRslt.join("");
  event.rc = /^\d{0,3}( \d{0,3}( \d{0,2})?)?$/.test(strTest);
}
Der ganze Spaß wird als benutzerdefiniertes Tasteneingabeskript definiert und dann kann es losgehen. Eine Datei in der ich obigen Code eingebunden habe, hänge ich auch wieder an.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Antworten