Manuel Marhold: mehrere input in einer Form

Hi ihr..

Ich habe eine asp-Datei, mit der ich über ODBC auf eine Acces-Db zugreife. In dieser Datei sind in einer Form 3 Input-Felder.
2 von diesen haben 2 Buttons:
1x "OK"
1x "Cancel"

Der "OK"-Button soll, wenn ich mit dem Barcodescanner den Code einscanne und ein "ENTER" hinetrhersende, automatisch durch das übergebene "ENTER" aktiviert werden.
Der "Cancel"-Button stellt alles auf seinen Ursprungswert zurück.

Wenn ich jedes Input-paket in eine einzelne Form packe, wird der "OK"-Button durch das ENTER aktiviert.
Allerdings wird auch nur der Inhalt des in dieser Form zugehörigen Input-Feldes übergeben, was in meiner Fehlerabfrage am Anfang (ist für das Problem unwichtig) zu Fehler führt.

Ich muss also alle drei Input-Pakete in EINE Form packen, aber das automatische aktivieren des zugehörigen "OK"-Buttons soll trotzdem funktionieren.

Das Lager "1" ist das Stanardlager, die Artikelnummer "001001" ist die Standardartikelnummer.

Das "SUBMIT=start" ist für meine Fehlerabfrage am Anfang.

Ich habe folgenden Code:

<FORM action="zugang.asp" METHOD="GET" NAME="frm">
 <strong>&nbsp;Lager Nr.</strong><br>
 <input name="Lager"   type="text"  value="<%=Request.QueryString("Lager")%>" Size="12">
 <input name="SUBMIT"  type="SUBMIT" value="OK">
 <input name="cancel_lag" type="button" value="Cancel" onClick="self.location.href='zugang.asp?Lager=1&Artikel=001001&SUBMIT=start'">
 <br><strong>&nbsp;Artikel Nr.</strong><br>
 <input name="Artikel"  type="text"  value="<%=Request.QueryString("Artikel")%>" Size="12">
 <input name="OK_Artikel" type="SUBMIT" value="OK">
 <input name="cancel_art" type="button" value="Cancel" onClick="self.location.href='zugang.asp?Lager=<%=Request.QueryString("Lager")%>&Artikel=001001&OK_Lager=OK'">
 <br><strong>&nbsp;Menge:</strong><br>
 <input name="zugang"   type="text"  value="<%=Request.QueryString("zugang")%>" Size="12">
 <input name="OK_Zugang"  type="submit" value="&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OK&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;">
 <form>

Ist es irgenwie möglich, dass das trotzdem geht?

Wäre über eine Antwort sehr erfreut.

Gruß und schönes Wochenende.

Manuel

  1. Hallo,

    Der "OK"-Button soll, wenn ich mit dem Barcodescanner den Code einscanne und ein "ENTER" hinetrhersende, automatisch durch das übergebene "ENTER" aktiviert werden.

    Verstehe ich nicht. Was heisst "aktiviert werden"?

    Ich muss also alle drei Input-Pakete in EINE Form packen, aber das automatische aktivieren des zugehörigen "OK"-Buttons soll trotzdem funktionieren.

    Ist es irgenwie möglich, dass das trotzdem geht?

    Ich verstehe leider nicht wirklich was du möchtest. Kannst du das etwa anderes erklären?

    Cancel 1 und 2 stellen die Originalwerte im entsprechenden Feld wieder her. So weit komme ich ;-)

    Du hast nach deinem Bsp.

    [OK(submit)1][cancel 1]
    [OK(submit)2][cancel 2]
       [OK(submit)3]

    Was sollte nun genau passieren wenn man auf OK 1 klick, was wenn man auf OK 2 klickt und was wenn man auf OK 3 klickt?

    Grüße
    Thomas

    1. Cancel 1 und 2 stellen die Originalwerte im entsprechenden Feld wieder her. So weit komme ich ;-)

      Du hast nach deinem Bsp.

      [OK(submit)1][cancel 1]
      [OK(submit)2][cancel 2]
         [OK(submit)3]

      Was sollte nun genau passieren wenn man auf OK 1 klick, was wenn man auf OK 2 klickt und was wenn man auf OK 3 klickt?

      Hi.

      Wenn ich auf den OK1 klicke, soll der Inhalt des Input-Feldes "Lager" per GET an die "zugang.asp" übergeben werden.

      Wenn ich auf den OK2 klicke, soll
      a) Der Wert des Inputfeldes "Lager" (welches ich per GET übergegen habe) und
      b) der Inhalt des Input-Feldes "Artikel"
      per GET an die "zugang.asp" übergeben werden.

      Wenn ich auf den OK2 klicke, soll
      a) Der Wert des Inputfeldes "Lager" (welches ich per GET übergegen habe),
      b) der Inhalt des Input-Feldes "Artikel" (welches ich per GET übergegen habe) und
      c) der Inhalt des Input-Feldes "Menge" per GET an die "zugang.asp" übergeben werden.

      Alle 3 Input-Felder und alle 5 Buttons sind in der Form "frm".

      Wenn ich die Button OK1, OK2 und OK3 manuell betätige, geht das auch alles ohne Probleme.

      Allerdings sollen die Werte, die in die Input-Felder kommen per Barcode-Scanner eingelesen werden.
      Auch kein Problem.

      Aber damit ich nicht immer wieder nach dem einscannen auf den OK-Button klicken muss, wird vom Barcode-Scanner nach dem ergelesenen Wert ein "RETURN" hinterhergesendet.

      Das entspricht dem einmaligen drücken der ENTER-Taste auf der Tastatur.

      Mit diesem RETURN soll jeweilige OK Button "gedrückt" werden.

      Wenn ich mich mit dem Courser in dem ersten Input-Feld ("Lager") befinde, soll der OK1 "gedrückt" werden, wenn ich mich mit dem Coursetr in dem zweiten Input-Feld ("Artikel") befinde, soll der OK2 "gedrückt" werden und wenn ich mich mit dem Courser in dem dritten Input-Feld ("Menge") befinde, soll der OK3 "gedrückt" werden.

      Falls das nicht möglich ist, muss ich es trotzdem hinbekommen, dass wenn ich jedes Input-Feld mit dem zugehörigen OK-Button in eine einzelne Form packe, dass alle drei Werte übergeben werden.

      BTW: Wenn ich jedes Input-Feld mit dem zugehörigen OK-Button in eine einzelne Form packe, klappt das mit dem automatischen "drücken" des OK-Buttons.

      Gruß

      Manuel

      1. Hallo,

        Cancel 1 und 2 stellen die Originalwerte im entsprechenden Feld wieder her. So weit komme ich ;-)

        Du hast nach deinem Bsp.

        [OK(submit)1][cancel 1]
        [OK(submit)2][cancel 2]
           [OK(submit)3]

        Was sollte nun genau passieren wenn man auf OK 1 klick, was wenn man auf OK 2 klickt und was wenn man auf OK 3 klickt?

        Hi.

        Wenn ich auf den OK1 klicke, soll der Inhalt des Input-Feldes "Lager" per GET an die "zugang.asp" übergeben werden.

        Wenn nur das und nur das übergeben werden soll, sehe ich nur mit Javascrit eine Möglichkeit. Mit Javascript könntest du vor dem submit() die anderen Felder "entleeren" und somit "nur" den Inhalt vom "Lager" mitsenden, die anderen Felder würden dann eben ohne Wert ankommen. Das kannst du dann im zugang.asp auswerten.

        Alternativ du sendest mit jedem OK-Button einen hidden-Feld mit (ebenfalls mit Javascript zu setzen) dann wertest du im zugang.asp aus, welches OK angeklickt wurde und dann nur die entsprechende(n) Feld-Wert Paar(e) auswerten.

        Für die anderen zwei Fälle gilt dasselbe.

        Allerdings sollen die Werte, die in die Input-Felder kommen per Barcode-Scanner eingelesen werden.
        Auch kein Problem.

        Aber damit ich nicht immer wieder nach dem einscannen auf den OK-Button klicken muss, wird vom Barcode-Scanner nach dem ergelesenen Wert ein "RETURN" hinterhergesendet.

        Das entspricht dem einmaligen drücken der ENTER-Taste auf der Tastatur.
        Mit diesem RETURN soll jeweilige OK Button "gedrückt" werden.

        Normalertweise kannst du die Entertaste mit z.B.
        onKeyDown="if(event.keyCode==13) this.form.submit();" abfangen. Vielleicht hilft dir dies etwas weiter.

        Wenn ich mich mit dem Courser in dem ersten Input-Feld ("Lager") befinde, soll der OK1 "gedrückt" werden, wenn ich mich mit dem Coursetr in dem zweiten Input-Feld ("Artikel") befinde, soll der OK2 "gedrückt" werden und wenn ich mich mit dem Courser in dem dritten Input-Feld ("Menge") befinde, soll der OK3 "gedrückt" werden.

        Das mit dem Cursor wäre aber ein onChange-Event, das kann aber ins Auge gehen, denn bei manueller Eingabe ist jede Buchstabe ein "onChange".
        Alternativ wäre ein onBlur-Event auf das Feld, das ja dann ausgelöst wird, wenn man das Feld verlässt.

        Falls das nicht möglich ist, muss ich es trotzdem hinbekommen, dass wenn ich jedes Input-Feld mit dem zugehörigen OK-Button in eine einzelne Form packe, dass alle drei Werte übergeben werden.

        Könntest du mit JavaScrit und hidden-Felder machen: du schreibst eine Funktion für das Absenden, die Funktion liest erst die Werte aus den anderen Formularen, dann setzt sie in die entsprechenden hidden-Felder im aktuellen Formular und sendet schließlich das Formular ab.

        Grüße
        Thomas