Marc Miller: Event nach Veränderung

Hallo

Ich grüble gerade an folgender Aufgabenstellung rum:

Ich habe ein Textfeld und ein button. Bei click auf den button schreibe ich den wert des textfeldes in ein array und lösche den Inhalt der Feldes wieder. soweit so gut.

Nun möchte ich aber, dass falls der Inhalt des textfeldes mittels einem Barcode leser gefüllt wird, der wert direkt in das array geschrieben wird (bei manueller eingabe bleibt alles gleich). ich stell mir das so vor, dass ich nach jeder eingabe die anzahl characters ermittle und wenn die Veränderung mehr als 1 ist, wird geschrieben. (ähnlich wie wenn ich einen längeren string rein paste).

Wie gehe ich dies am besten an? irgendwie kann ich den onChange nicht recht brauchen??

Danke und gruss
Marc

  1. Hallo Marc,

    Nun möchte ich aber, dass falls der Inhalt des textfeldes mittels einem Barcode leser gefüllt wird, der wert direkt in das array geschrieben wird (bei manueller eingabe bleibt alles gleich). ich stell mir das so vor, dass ich nach jeder eingabe die anzahl characters ermittle und wenn die Veränderung mehr als 1 ist, wird geschrieben. (ähnlich wie wenn ich einen längeren string rein paste).

    Wie gehe ich dies am besten an? irgendwie kann ich den onChange nicht recht brauchen??

    Doch, schon mit onchange. Bei der mit onchange aufgerufenen Funktion kannst du jedes Mal den Wert des Feldes in einer Variablen speichern, und beim nächsten Aufruf kannst du diese Variable mit dem Inhalt des Textfeldes vergleichen.

    Es gibt auch eine Möglichkeit, die Variable so zu definieren, dass sie beim nächsten Aufruf der Funktion noch da ist, ohne sie global definieren zu müssen. Ich finds nur grad nicht mehr (oder es war bei PHP).

    Viele Grüße aus Freiburg,
    Marian

    --
    Microsoft broke Volkswagen's world record: Volkswagen only made 22 million bugs!
    <!--[if IE]><meta http-equiv="refresh" content="0; URL=http://www.getfirefox.com"><[endif]-->
    Mein SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) n4:( ss:) de:] js:| ch:? mo:} zu:)
    1. Hallo Ingrid,

      Es gibt auch eine Möglichkeit, die Variable so zu definieren, dass sie beim nächsten Aufruf der Funktion noch da ist, ohne sie global definieren zu müssen. Ich finds nur grad nicht mehr (oder es war bei PHP).

      Ja, wars: http://de2.php.net/static#language.variables.scope.static

      Viele Grüße aus Freiburg,
      Marian

      --
      Microsoft broke Volkswagen's world record: Volkswagen only made 22 million bugs!
      <!--[if IE]><meta http-equiv="refresh" content="0; URL=http://www.getfirefox.com"><[endif]-->
      Mein SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) n4:( ss:) de:] js:| ch:? mo:} zu:)
  2. Hallo,

    Nun möchte ich aber, dass falls der Inhalt des textfeldes mittels einem Barcode leser gefüllt wird, der wert direkt in das array geschrieben wird (bei manueller eingabe bleibt alles gleich). ich stell mir das so vor, dass ich nach jeder eingabe die anzahl characters ermittle und wenn die Veränderung mehr als 1 ist, wird geschrieben. (ähnlich wie wenn ich einen längeren string rein paste).

    irgendwie verweigert sich gerade mein Verstand das Gelesenen so zu akzeptieren, wie es da tatsächlich steht. Einen Barcodelesegerät über ein Plugin mit einem Browser zu verbinden, um die Funktionalität von JavaScript nutzen zu können, halte ich für ähnlich intelligent, wie das Nutzen eines Ochsengespanns auf der Autobahn.
     Dafür gibt es doch genug Toolkits, die Dir eine GUI auf den Bildschirm mit einem vernünftigen Programmiersprache als Unterlage Deiner Anwendung zaubern können.

    Nichts desto Trotz: Irgendwie müssen die Daten des Barcodes ja in das Eingabefeld kommen. Und genau dort ansetzend ist für mich ein konzeptioneller Denkenfehler gemacht worden. Warum wurde in dieser Funktionalität nicht gleich der Aufruf Deiner JavaScriptprüffunktion bewerkstelligt? Wie sieht die Schnittstelle aus? Kann sie auch mittels JavaScript angesprochen werden?

    Wie gehe ich dies am besten an? irgendwie kann ich den onChange nicht recht brauchen??

    Bei der Eingabe über die Tastatur wird Dein JavaScript erst durch [Enter] aktiviert. Was spricht dagegen nach dem Einlesen auch [Enter] zu drücken?

    Gruß aus Berlin!
    eddi

  3. Hallo,

    Nun möchte ich aber, dass falls der Inhalt des textfeldes mittels einem Barcode leser gefüllt wird, der wert direkt in das array geschrieben wird (bei manueller eingabe bleibt alles gleich).

    Das ist ein Barcodeleser, der am PS/2-Anschluss, parallel zur Tastatur angeschlossen ist?
    Wenn ja, hast Du das schon einmal probiert? Die Tastatur-Barcodeleser, die ich kennen, erzeugen die Tastatur-Scancodes der gelesenen Barcodes, gefolgt von CR/LF. Dein Formular würde also abgeschickt, wenn der Barcodeleser fertig wäre. Das, was dann noch mit JavaScript gelöst werden muss, müsste HTMLFormular.onsubmit passieren.

    ich stell mir das so vor, dass ich nach jeder eingabe die anzahl characters ermittle und wenn die Veränderung mehr als 1 ist, wird geschrieben. (ähnlich wie wenn ich einen längeren string rein paste).

    Das ist nicht so. Der Barcodeleser, wenn es ein Tastatur-Barcodeleser ist, pastet nicht den gesamten String, sondern sendet die einzelnen Tastatur-Scancodes, die er gelesen hat. Das ist so, als würdest Du mit der Tastatur "012345" tippen, nur eben viel schneller.

    viele Grüße

    Axel