Forum: PC Hard- und Software Javascript Alert darf auf Space nicht reagieren


von Tim (Gast)


Lesenswert?

Hi.

Ich nutze einen Barcode-Reader in einem Inputfield.
Dieses wird mit Javascript bei onkeyup getestet ob ein fehlerhafter Char 
eingescannt wurde.
Dann kommt evtl ein alert() Fenster mit der Meldung.
Problem ist nun, dass der Barcode-Scanner nach jedem eingescannten Wert 
ein Leerzeichen sendet und damit die eingeblendete Meldung schliesst.

Gibt es eine Möglichkeit dem Alert-Fenster es abzugewöhnen nicht auf ein 
Space zu reagieren?

Tim

von Hmmm (Gast)


Lesenswert?

Tim schrieb:
> Gibt es eine Möglichkeit dem Alert-Fenster es abzugewöhnen nicht auf ein
> Space zu reagieren?

Nein.

Du kannst aber per DOM einfach an der passenden Stelle innerhalb der 
Seite eine Fehlermeldung anzeigen lassen - oder Dir einen mit alert() 
vergleichbaren Dialog in Javascript bauen.

Alternativ gibt's sowas auch in Libraries wie jQuery.

von Tim (Gast)


Lesenswert?

Hallo!

"DOM" muss ich mal danach suchen was Du genau meinst.

Mit dem Dialog klappte nicht direkt.
Dieser reagierte auch auf das Space.

JS:
1
dialog.show();

HTML:
1
<dialog  id=\"dialog\">
2
           <h2>ERROR</h2>
3
           <form method=\"dialog\">
4
            <label for=\"Notification\">Falsches Zeichen eingescannt!</label>
5
            <button id=\"Abbruch\">Abbrechen</button>
6
          </form>  
7
        </dialog>

von Εrnst B. (ernst)


Lesenswert?

Tim schrieb:
> Mit dem Dialog klappte nicht direkt.
> Dieser reagierte auch auf das Space.

Ganz blöder Würg-Around:
Bau in den Dialog ein Texteingabefeld mit ein. Das schluckt dann die 
Leerzeichen.

von Hmmm (Gast)


Lesenswert?

Tim schrieb:
> "DOM" muss ich mal danach suchen was Du genau meinst.

Vereinfacht formuliert: Du gibst einem Element innerhalb der Seite einen 
Namen und befüllst es dann in Javascript mit einem neuen Inhalt, um 
Deine Fehlermeldung anzuzeigen:

https://www.w3schools.com/jsref/prop_html_innerhtml.asp

So kann dann z.B. direkt unter dem Eingabefeld die Fehlermeldung 
erscheinen.

Tim schrieb:
> Mit dem Dialog klappte nicht direkt.
> Dieser reagierte auch auf das Space.

Ich meinte nicht <dialog>, sondern Dialoge als Gattungsbegriff. 
Technisch wäre das ein Container mit hohem zIndex, der über der 
eigentlichen Seite liegt und die Fehlermeldung enthält.

Kann man wahlweise selbst bauen oder von einer Library erledigen lassen, 
wobei letztere Dich evtl. wieder nicht das Verhalten beim Drücken von 
Space beeinflussen lässt.

Ganz anderer Ansatz: Barcode-Scanner haben normalerweise im Handbuch 
Config-Barcodes, womit Du evtl. auch das angehängte Leerzeichen 
abschalten kannst.

von Tim (Gast)


Lesenswert?

Εrnst B. schrieb:
> Ganz blöder Würg-Around:
> Bau in den Dialog ein Texteingabefeld mit ein. Das schluckt dann die
> Leerzeichen.
Gleich mal getestet und funktionierte.
Aber: Leider wird es mit type=\hidden" dann nicht mehr abgefangen und 
size="1" wäre sichtbar.


Hmmm schrieb:
> So kann dann z.B. direkt unter dem Eingabefeld die Fehlermeldung
> erscheinen.
Ah, okay.
Das wäre natürlich auch möglich.

> Technisch wäre das ein Container mit hohem zIndex, der über der
> eigentlichen Seite liegt und die Fehlermeldung enthält.
>
> Kann man wahlweise selbst bauen...
Noch nie gemacht in JavaScript.
Aber ich hab da eh noch viel zu lernen ;)

> Ganz anderer Ansatz: Barcode-Scanner haben normalerweise im Handbuch
> Config-Barcodes, womit Du evtl. auch das angehängte Leerzeichen
> abschalten kannst.
Ja, das ist konfiguriertbar.
Die komplette Verwaltung ist jedoch darauf aufgebaut ein Leerzeichen zu 
bekommen (So blöd das ist). Der Umbau wäre für die "Kleinigkeit" leider 
zu weitreichend.

von Hmmm (Gast)


Lesenswert?

Tim schrieb:
> Gleich mal getestet und funktionierte.
> Aber: Leider wird es mit type=\hidden" dann nicht mehr abgefangen und
> size="1" wäre sichtbar.

Das sollte sich mit CSS hinbiegen lassen (weisser Adler auf weissem 
Grund), aber es bleibt eben ein Workaround.

Tim schrieb:
> Noch nie gemacht in JavaScript.
> Aber ich hab da eh noch viel zu lernen ;)

Das ist nicht so schlimm, wie es zuerst aussieht. Gerade die oben 
verlinkte URL ist da hilfreich, weil man alles schnell und bequem 
ausprobieren kann.

Ich würde den Weg mit der Fehlermeldung im Dokument wählen. Dann muss 
man nach einem Fehlscan (z.B. korrekter und ungeeigneter Barcode direkt 
nebeneinander) nichts wegklicken, sondern kann einfach nochmal scannen.

von Jan H. (j_hansen)


Lesenswert?

Tim schrieb:
> Dieses wird mit Javascript bei onkeyup getestet ob ein fehlerhafter Char
> eingescannt wurde.
> Dann kommt evtl ein alert() Fenster mit der Meldung.
> Problem ist nun, dass der Barcode-Scanner nach jedem eingescannten Wert
> ein Leerzeichen sendet und damit die eingeblendete Meldung schliesst.

Nicht sofort den Alertdialog öffnen sondern kurz warten bis der 
Barcodeleser fertig ist.

von c-hater (Gast)


Lesenswert?

Jan H. schrieb:

> Nicht sofort den Alertdialog öffnen sondern kurz warten bis der
> Barcodeleser fertig ist.

Wenn schon pragmatische Lösungen, dann richtig: Nicht "warten bis der 
Barcode-Leser fertig ist", sondern: so lange warten, bis man sicher sein 
kann, dass der Barcodeleser alles übermittelt hat, was er übermitteln 
wollte.

Der Unterschied ist: man wartet nicht auf ein Event, welches es nicht 
gibt, sondern eine Zeit (von der man hofft, dass sie ausreicht).

Eine Bastellösung ist aber sowohl das eine als auch das andere. Die 
richtige Lösung wäre, den Leser zu zu konfigurieren, dass er halt kein 
zusätzliches Blank liefert (ich bezweifele übrigens, dass es wirklich 
ein Blank ist, wahrscheinlicher ist ein CR oder CRLF oder ein TAB).

Das wäre so das typische, um Windows-Textboxen oder Felder in 
Excel-Grids zu füllen.

von Tim (Gast)


Lesenswert?

Kurzes Feedback:
Vielen Dank für Eure Antworten!
Ich melde mich wenn ich getestet habe.
Hatte grade viel um die Ohren und konnte noch nicht ran.

Grüße

von Tim (Gast)


Lesenswert?

Hi.

Hmmm schrieb:
> Ich würde den Weg mit der Fehlermeldung im Dokument wählen. Dann muss
> man nach einem Fehlscan (z.B. korrekter und ungeeigneter Barcode direkt
> nebeneinander) nichts wegklicken, sondern kann einfach nochmal scannen.
Ja, habe ich nun auch so gemacht und funktioniert auch wie es sollte.
Danke für die Idee!

Jan H. schrieb:
> Nicht sofort den Alertdialog öffnen sondern kurz warten bis der
> Barcodeleser fertig ist.
Das Delay hat irgendwie nichts gebracht - Komischerweise.
Aber war eine gute Idee!

c-hater schrieb:
> ich bezweifele übrigens, dass es wirklich
> ein Blank ist, wahrscheinlicher ist ein CR oder CRLF oder ein TAB
Warum sollte es kein Blank sein, wenn wir es damals so konfiguriert 
hatten?

Vielen Dank auf jeden Fall!
Ich bin froh, dass es nun abgehakt ist.

Grüße und eine schöne Woche!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.