Event Laserpistole abfangen in Javascript
Michael
- javascript
Hallo,
Vor einigen Tagen habe ich mich an das Forum gewandt, in der Hoffnung, dass mir jemand beim Problem Abfangen des Events "Abschießen eines Barcodes mit einer Laserpistole" in Javascript oder JScript Tipps geben könnte. Zwischenzeitlich habe ich mir eine Lösung zusammengebastelt, die auch nach meinen Vorstellungen funktioniert und vielleicht jemandem von Nutzen sein könnte. Oder vielleicht weiß jemand trotzdem noch eine elegantere Lösung.
Die Laserpistole ist an der Tastatur angeschlossen und kann somit mit dem Event-Handler onkeydown() abgefangen werden (event.keyCode 13).
Das Ziel: Entgegennahme eines Datenstrings mit der Laserpistole, in dem eine Artikelnummer, ein zugehöriges Unterscheidungsmerkmal und eine Chargennummer verpackt sind.
Für die Eingabe braucht es natürlich ein Formular-Eingabefeld, das mit focus() angesteuert wird, damit der String auch dort abgelegt werden kann. Der String wird also reingestellt, Zeichen für Zeichen, abschließend kommt der eigentliche keyCode (13), den ich gezielt abfrage, um Zusatzfunktionen aufzurufen, wie das Auseinanderklauben des Eingabestrings.
Die Artikel- und die Chargennummer werden dabei in separate Zielfelder eingestellt, das provisorische String-Feld lösche ich wieder.
Die Plausibilitätsprüfung wird dann von einem PHP-Skript abgearbeitet, das über einem submit-Button angestoßen wird, der fokussiert werden muss, und in dessen Beschreibungstext vorher "Laserpistole" drinnen stand und jetzt on the fly "OK" eingestellt wird.
Will man verhindern, dass der Entertasteneffekt greift, braucht man nur den Wert event.returnValue auf false zu setzen.
Hier das Skript-Schnipsel:
<script for="document" event="onkeydown()" language="JScript" type="text/jscript">
<!--
{
document.form1.data1.focus();
if (event.keyCode==13)
{
a = document.form1.data1.value;
document.form1.data1.value = "";
barcodesplit(a);
document.form1.okbutton.value = " OK ";
document.form1.okbutton.focus();
//event.returnValue=false;
}
return true;
}
//-->
</script>";
Michael