Bei Falscheingabe Inhalt löschen

Grundsätzliche Themen zur Bedienung, Erstellung von Formularen, Datenbankanbindung und Beispiele ...
Antworten
Daniel.Diehl
Beiträge: 88
Registriert: 03.04.2013, 16:57

Bei Falscheingabe Inhalt löschen

Beitrag von Daniel.Diehl » 21.07.2017, 15:06

Hallo zusammen,

ich habe bei mir ein Problem mit einem Textfeld.

In dieses Feld wird eine Seriennummer eingegeben, die überprüft wird.
Wenn es der falsche Nummernpräfix ist, dann kommt eine MessageBox und danach soll das Feld geleert werden, aber genau das bekomm ich irgendwie nicht hin.

Könnt ihr mir helfen?

Hier der Code der sich im Change Event befindet:

Code: Alles auswählen

if (xfa.event.newText.toUpperCase() == "200301E0000".substr(0,xfa.event.newText.length) || xfa.event.newText.match(/^200301E0000d{1,4}$/i)) {
    xfa.event.change = xfa.event.change.toUpperCase() ;
} else {
    xfa.host.messageBox("Die Seriennummer entspricht nicht der Vorgabe: 200301E0000XXXX nDie Eingabe wird gelöscht!") ;
    xfa.event.change = "" ;
}
 

Andreas H.
Beiträge: 533
Registriert: 14.04.2015, 11:10

Bei Falscheingabe Inhalt löschen

Beitrag von Andreas H. » 21.07.2017, 17:51

Hallo Daniel,

Du hast beim Kopieren den Code aus dem "exit Event" vergessen mitzunehmen.

if (this.rawValue.length != 15) {
    xfa.host.messageBox("Seriennummer entspricht nicht der Vorgabe: 200102E0000XXXX \nBitte überprüfen!!");
    this.rawValue = "" ;
}

Gruß
Andreas

Daniel.Diehl
Beiträge: 88
Registriert: 03.04.2013, 16:57

Bei Falscheingabe Inhalt löschen

Beitrag von Daniel.Diehl » 24.07.2017, 08:49

Hallo Andreas,

auch dann geht es nicht. Es funktioniert nur wenn die Zahl gleich der Vorgabe ist und weniger als 15 Zeichen hat. Dann wird das Feld geleert.

Wenn ich mit einer richtigen Zahl anfange und dann z.B. statt dem E ein N reinmache, bleibt alle stehen und viel schlimmer, er übernimmt nach der OK drücken der Messagebox auch noch das N in das Feld.


Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Andreas H.
Beiträge: 533
Registriert: 14.04.2015, 11:10

Bei Falscheingabe Inhalt löschen

Beitrag von Andreas H. » 24.07.2017, 10:29

... der reguläre Ausdruck im change Event xfa.event.newText.match(/^200301E0000\d{1,4}$/i) lässt kein "N" zu und d{1-4} lässt nur die Zifferanzahl zu, wie Du es schaffst da ein "N" einzugeben ist mir schleierhaft.

Das einizige was in dem Code kein Sinn ergibt ist die Messagbox, die meldet sich bei einer Falscheingabe aus dem exit.



Daniel.Diehl
Beiträge: 88
Registriert: 03.04.2013, 16:57

Bei Falscheingabe Inhalt löschen

Beitrag von Daniel.Diehl » 24.07.2017, 11:05

Öffne mal bitte das PDF und gib zum Beispiel 200N.

Dann kommt die Message Box aber die 200N wird danach nicht gelöscht.

Andreas H.
Beiträge: 533
Registriert: 14.04.2015, 11:10

Bei Falscheingabe Inhalt löschen

Beitrag von Andreas H. » 25.07.2017, 10:38

... ich glaube ich habe erkannt wo Dein Problem liegt. Die erste Meldung kommt aus dem "change event" und hier widerspreche ich Deine Aussage, die "200" bleibt im Feld stehen aber die letzte fehlerhafte Eingabe nicht, in deinem Fall das "N".

Sobald Du das Feld verlässt ohne die Eingabe zu korrigieren wird die komplette Eingabe über das Skript aus dem "exit event" gelöscht.

Daniel.Diehl
Beiträge: 88
Registriert: 03.04.2013, 16:57

Bei Falscheingabe Inhalt löschen

Beitrag von Daniel.Diehl » 26.07.2017, 10:15

Genau so ist es.

Wäre es problematisch das er beides mal die Eingabe komplett löscht. Also egal ob die Meldung aus dem Exit Event oder dem Change Event kommt?

Andreas H.
Beiträge: 533
Registriert: 14.04.2015, 11:10

Bei Falscheingabe Inhalt löschen

Beitrag von Andreas H. » 27.07.2017, 10:17

Der Sinn Deines Vorhaben erklärt sich mir nicht ganz, vielleicht fehlt ein Gedanke von Dir den Du nicht dazu geschrieben hast.

Beispiel: Der User hat es geschafft die Hälfte der Seriennummer richtig einzugeben, nun ein Tippfehler, darauf folgt die Meldung: "Eingabe nicht korrekt". Die letzte Eingabe (Buchstabe/Ziffer etc.) wird gelöscht, übrig bleibt was korrekt eingetragen wurde und der User kann die Eingabe vervollständigen.

Mit dem Löschen der kompletten Eingabe im “change Event“ würde der User die Prozedur noch einmal von vorne beginnen müssen. Warum soll der User da gegängelt werden?

armine
Beiträge: 2690
Registriert: 16.05.2009, 10:24

Bei Falscheingabe Inhalt löschen

Beitrag von armine » 27.07.2017, 11:28

Hallo zusammen,

wozu soll das Gezerre der vollständigen Eingabe einer Seriennummer gut sein? Der umständliche vordere Teil wird ohnehin verraten, muss man den dann auch noch tippen? Vier Ziffern reichen doch.

Wenn’s aber unabdingbar sein sollte, dann soll’s wenigstens editierbar sein. Und wenn’s mit der Eingabe nicht gleich klappt, dann soll eine Fehlermeldung (pro Schadensfall) ausreichen.

vg armine
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Daniel.Diehl
Beiträge: 88
Registriert: 03.04.2013, 16:57

Bei Falscheingabe Inhalt löschen

Beitrag von Daniel.Diehl » 27.07.2017, 13:06

Die Nummer wird normalerweise per Handsanner in das Feld eingetragen.

Aber es gibt halt doch ein paar wenige unbelehrbare Mitarbeiter, die meinen sie sind schlauer als alle anderen und tragen die Nummer über die Tastatur ein.

Und um die ein bisschen zu ärgern, wäre es schön wenn die falsche Nummer (change event) und eine Nummer die falsch ist und unter 15 Zeichen (exit event) komplett gelöscht wird und der Mitarbeiter nochmal von vorne anfangen darf.

Antworten