wackeldackel: Formular Versand durch Scanner

Hallo,

ich habe ein kleines Problem mit dem automatischen versenden eines Formulars. (Ein Textfeld mit Button)

Ich möchte mittels eines Palms und einem Scanaufsatz Daten in ein Webformular einlesen und mir dann Daten aus einer Datenbank holen.
Normalerweise auch kein Problem, wenn der Scanner ein return liefern würde.
Der Palm Scanner kann nur TAB oder CR und da geht nichts.

Also habe ich mir gedacht ich mache das mit Javascript und prüfe die Anzahl der eingegebenen Zeichen (müssen immer 11 sein). Wenn 11 drin sind dann wird ein submit() ausgelöst. Das funktioniert auch bei normalen Browsern, aber nicht mit dem Browser auf den Palm, obwohl hier Javascript aktiviert ist.

Javascript für das Absenden:

</script>
<script language="javascript">
<!--
function countChars() {
document.getElementById('counter').value=document.getElementById('txt_scanfeld').value.length;
 if(document.getElementById('txt_scanfeld').value.length == 11) {
   Javascript:scanformular.submit();

}
}

Grobaufbau Formular:

echo '<form name=scanformular id=scanformular action=scan.php method=post>';

echo '<table width=400px height=315px  border=1 align=left>';
     echo '<tr>';
       echo '<td >';
         echo'<input type=text id=txt_scanfeld name=txt_scanfeld  size=13 maxlength=11 onkeyup=Javascript:countChars()>' ;
       echo '</td>';
       echo '<td class=font_mittel>';
 echo '<input type=submit name=cmdsendenScanner value=Scannen>';
       echo '</td>';
       echo '<td class=font_mittel>';
       echo '</td>';
       echo '<td class=font_mittel>';
       // Prüffeld mit der momentanen Zeichenanzahl
       echo '<input type=text name=counter id=counter  size=2/>';
       echo '</td>';
echo '</form>';
     echo '</tr>';

Hat hier jemand eine Idee wie das funktionieren könnte ??

  1. Hallo wackeldackel,

    function countChars() {
    document.getElementById('counter').value=document.getElementById('txt_scanfeld').value.length;
    if(document.getElementById('txt_scanfeld').value.length == 11) {
       Javascript:scanformular.submit();
      }
    }

    Was funktioniert den nicht?
    Wird im Feld "counter" die momentanen Zeichenzahl angezeigt?

    Warum sprichst Du die submit-Funktion so merkwürdig an? Laut SelfHTML-Dokumentation gibt es viele schöne Beispiele:
    http://de.selfhtml.org/javascript/objekte/forms.htm#submit

    Herzliche Grüße aus Weinsberg
    Helmut Weber

    --
    -------------------------------------------
    Mode ist eine Variable, Stil eine Konstante
    1. Hallo Helmut,

      das mit dem submit funktioniert so ja einwandfrei (auf einem PC)
      Mein eigentliches Problem ist, dass ich ein Formular mit eine CR wegschicken müsste, was nicht geht.
      Wenn man was scannt und dann manuell das Formular versendet ist das recht umständlich.

      Also hätte ich gern einen automatischen Versand nach dem Ausfüllen des Textfeldes. Der einzige Weg ist das mit der Anzahl der Zeichen.

      Problem:

      der Browser auf dem Palm T|X erkennt mein Javascript nicht und zählt somit nicht mit und damit wird auch nichts verschickt. Ich denke es liegt am Palm Browser. Ich wollte schon den Opera Mini installieren, aber der stürzt beim Aufruf einer Webseite ab.

      Klaus

      Hallo wackeldackel,

      function countChars() {
      document.getElementById('counter').value=document.getElementById('txt_scanfeld').value.length;
      if(document.getElementById('txt_scanfeld').value.length == 11) {
         Javascript:scanformular.submit();
        }
      }

      Was funktioniert den nicht?
      Wird im Feld "counter" die momentanen Zeichenzahl angezeigt?

      Warum sprichst Du die submit-Funktion so merkwürdig an? Laut SelfHTML-Dokumentation gibt es viele schöne Beispiele:
      http://de.selfhtml.org/javascript/objekte/forms.htm#submit

      Herzliche Grüße aus Weinsberg
      Helmut Weber

      1. Hallo Klaus,

        Problem:

        der Browser auf dem Palm T|X erkennt mein Javascript nicht und zählt somit nicht mit und damit wird auch nichts verschickt. Ich denke es liegt am Palm Browser. Ich wollte schon den Opera Mini installieren, aber der stürzt beim Aufruf einer Webseite ab.

        Okay, dann musst Du Schritt für Schritt den Fehler eingrenzen.
        Kann der Palm-Browser evtl. nichts mit getElementById anfangen?
        Am Besten erst eine ganz einfache Funktion schreiben, die z.B. nur den Inhalt eines Textfeldes per alert() ausgibt, und sehen ob dies wie gewünscht funktioniert.

        Viel Spaß dabei ;-)

        Herzliche Grüße aus Weinsberg
        Helmut Weber

        --
        -------------------------------------------
        Mode ist eine Variable, Stil eine Konstante
        1. Hallo Klaus,

          Problem:

          der Browser auf dem Palm T|X erkennt mein Javascript nicht und zählt somit nicht mit und damit wird auch nichts verschickt. Ich denke es liegt am Palm Browser. Ich wollte schon den Opera Mini installieren, aber der stürzt beim Aufruf einer Webseite ab.

          Okay, dann musst Du Schritt für Schritt den Fehler eingrenzen.
          Kann der Palm-Browser evtl. nichts mit getElementById anfangen?
          Am Besten erst eine ganz einfache Funktion schreiben, die z.B. nur den Inhalt eines Textfeldes per alert() ausgibt, und sehen ob dies wie gewünscht funktioniert.

          Viel Spaß dabei ;-)

          Herzliche Grüße aus Weinsberg
          Helmut Weber

          Hallo Hemut,

          ich habe jetzt einen alert() beim body mit onload gemacht und das geht.
          Dann habe ich einen alert hinter einen Link gelegt. Das geht auch.
          Nur beim Textfeld bekomme ich das nicht zum Laufen (allerdings auch nicht in anderen Browsern)

          echo'<input type=text id=txt_scanfeld name=txt_scanfeld  size=13 maxlength=11  onchange=Javascript:alert("Example of a link that displays an alert box");>' ;

          Ich kann hier nichts falsches finden.

          Klaus

          1. Hallo Helmut,

            es liegt an meinem Skript und wahrscheinlich war deine Vermutung richtig.

            Ich habe was gefunden und das funktioniert halbwegs auch auf dem Palm.
            Allerdings wird hier das Restmengenfeld nicht automatisch aktualisiert, sondern erst nach Aktivierung (anklicken)

            Klaus
            http://www.devmag.net/muster/tasteneingaben_zaehlen.htm

  2. Also habe ich mir gedacht ich mache das mit Javascript und prüfe die Anzahl der eingegebenen Zeichen (müssen immer 11 sein). Wenn 11 drin sind dann wird ein submit() ausgelöst. Das funktioniert auch bei normalen Browsern, aber nicht mit dem Browser auf den Palm, obwohl hier Javascript aktiviert ist.

    Ganz wichtig ist, dass du valides HTML benutzt.

    Dein Beispiel ist invalide. Das mag deinen Desktop-Browser mit seinem riesigen Code zur Fehlerinterpretation vielleicht nicht beeindrucken, auf Geräten mit wenig Speicher wie einem Palm sind Browser weniger fehlertolerant.

    http://validator.w3.org/

    Darüber hinaus ist dein Javascript kritikwürdig. Wozu die ständige Nutzung von "javascript:", sowohl im onkeyup, als auch in der Funktion beim Submit?