Kai: button auf Formular aktivieren

Hallo!

ich habe folgendes Formular:
<html>
  <head>
  </head>
  <body>
    <h2>Passwortabfrage:</h2>
    <form action="" name="passwort">
      <table border="0" cellpadding="5" width="400" bgcolor="#E0E0E0" style="font-family:Arial; font-size:small;">
        <tr>
          <td>
     <div style="margin-top:10; margin-left:15;">
              <input type="radio" name="user" value="op" checked onClick="document.passwort.pwd.value=''">User1
            </div>
         <div style="margin-top:20; margin-left:15;">
        <input type="radio" name="user" value="main">User2
      </div>
            <div style="margin-top:5; margin-left:35;">Passwort:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
              <input type="password" id="pwd" value="" name="pwd" size="10" onClick="document.passwort.user[1].checked = true;">
     </div>
          </td>
        </tr>
        <tr>
          <td>
            <div style="margin-top:25; margin-left:15;margin-bottom:15;">
            <button id="id_ok" name="ok" type="button" value="Absenden"

onClick="check(document.passwort.user[0].checked, document.passwort.user[1].checked,

document.passwort.pwd.value)"><p>Absenden</p></button>
          </td>
        </tr>
      </table>
    </form>
  </body>
</html>

Das PRoblem ist, wenn ich auf Return klicke, macht er ne art aktualisiere. also wenn ich n Passwort bei user2 eingetragen habe und return klicke. dann läd er wieder die seite von neuem mit user1 angeklickt. hat jmd eine Ahnung, was ich einstellen müsste, dass er bei Return das gleiche tut wie wenn ich den Button absenden drücken würde?
Gruß Kai

  1. Sorry sorry sorry habs doch noch im Forumsarchiv gefunden! Tut mir leid! aber wenn zufällig jmd das gleiche PRoblem hat und nicht gleich fündig wird.

    http://forum.de.selfhtml.org/archiv/1999/12/t9241/

    LG Kai

  2. Hallo Kai,

    dein Formular enthält gleich mehrere Sünden.

    <form action="" name="passwort">

    Okay, das action-Attribut ist leer - beim Submit werden die Formulardaten also an dieselbe Ressource gesendet, die auch das Formular selbst enthält. Und zwar mit der GET-Methode, da das method-Attribut fehlt.

    <input type="password" id="pwd" value="" name="pwd" size="10" onClick="document.passwort.user[1].checked = true;">

    Was soll das onclick bei einem Textfeld? Wenn ich das Formular normal ausfülle, also mit der Tab-Taste von einem Feld zum nächsten gehe, springt dieser Eventhandler nie an. Meintest du vielleicht onchange?

    <button id="id_ok" name="ok" type="button" value="Absenden" onClick="check(document.passwort.user[0].checked, document.passwort.user[1].checked, document.passwort.pwd.value)"><p>Absenden</p></button>

    Auch hier: Was soll der onclick-Handler? Du möchtest hier sicher einen richtigen Submit-Button, und dann bitte auch das onsubmit-Event nutzen, nicht das onclick. Dass diese clientseitigen Überprüfungen nur zusätzlicher Komfort sein können und eine serverseitige Plausibilitätskontrolle nicht ersetzen, sollte klar sein.

    Das PRoblem ist, wenn ich auf Return klicke, macht er ne art aktualisiere.

    Worauf willst du klicken? Ich schätze mal, du meintest eher ein Drücken der Return-taste. Und ja, sicher, dann wird das Formular abgeschickt (da du keinen Submit-Button hast, ist die Enter-Taste ja die einzige Möglichkeit, das zu tun), und da das action-Attribut leer ist, wird dieselbe Ressource wieder neu geladen. Was ist daran verwunderlich? Wo findet übrigens die Verarbeitung der Formulardaten statt?

    So long,
     Martin

    --
    Wenn du beim Kochen etwas heißes Wasser übrig hast, friere es ein.
    Heißes Wasser kann man immer gebrauchen.
    1. Hi Martin,

      komischerweise funktioniert mein Formular genauso wie es sollte!

      Es ist folgendermaßen, der User1 wird als Default in der Checkbox markiert, klickt der User auf Absenden, wird der User eingeloggt. User1 braucht kein Passwort einzugeben.

      <input type="password" id="pwd" value="" name="pwd" size="10" onClick="document.passwort.user[1].checked = true;">

      Was soll das onclick bei einem Textfeld? Wenn ich das Formular normal ausfülle, also mit der Tab-Taste von einem Feld zum nächsten gehe, springt dieser Eventhandler nie an. Meintest du vielleicht onchange?

      Bei User2 ist es folgendermaßen: klickt der User in das Eingabefeld, wird automatisch die Checkbox User2 angeklickt (deswegen onClick).

      <button id="id_ok" name="ok" type="button" value="Absenden" onClick="check(document.passwort.user[0].checked, document.passwort.user[1].checked, document.passwort.pwd.value)"><p>Absenden</p></button>

      Auch hier: Was soll der onclick-Handler? Du möchtest hier sicher einen richtigen Submit-Button, und dann bitte auch das onsubmit-Event nutzen, nicht das onclick. Dass diese clientseitigen Überprüfungen nur zusätzlicher Komfort sein können und eine serverseitige Plausibilitätskontrolle nicht ersetzen, sollte klar sein.

      Bei klicken auf den Button "Absenden" wird eine Funktion aufgerufen, die allerdings in einem externen Javascript steht. beim Aufruf von Check hab ich vornedran etwas weggelöscht *sorry* dieses Javascript wird verschlüsselt, dass der User nicht sieht, was da so genau geschieht ;)

      Das PRoblem ist, wenn ich auf Return klicke, macht er ne art aktualisiere.

      Worauf willst du klicken? Ich schätze mal, du meintest eher ein Drücken der Return-taste. Und ja, sicher, dann wird das Formular abgeschickt (da du keinen Submit-Button hast, ist die Enter-Taste ja die einzige Möglichkeit, das zu tun), und da das action-Attribut leer ist, wird dieselbe Ressource wieder neu geladen. Was ist daran verwunderlich? Wo findet übrigens die Verarbeitung der Formulardaten statt?

      ja genau ich meinte die Return-taste. Achja hatte es mit einem richtigen Submit-Button versucht, aber da hat es genauso nicht funktioniert. DIe Verarbeitung der Formulardaten ist eben in der FUnktion check(..) in einem externen Javascript.

      Gruß Kai

      1. Hallo Kai,

        komischerweise funktioniert mein Formular genauso wie es sollte!

        ja - mit *deinen* Systemeinstellungen und mit *deinen* Gewohnheiten.
        Beispielsweise setzt du voraus, dass Javascript aktiviert ist, was ja nicht selbstverständlich ist. Und du setzt User voraus, die gern und viel mit der Maus hantieren.

        Bei User2 ist es folgendermaßen: klickt der User in das Eingabefeld, wird automatisch die Checkbox User2 angeklickt (deswegen onClick).

        Aber welcher Anwender *klickt* schon in ein Textfeld? Ja, sicher, manche tun das. Aber das ist nicht zwangsweise so. Ich bin es z.B. gewöhnt, in Formularen mit der Tab-Taste zu navigieren, die Maus kommt dabei wenig bis gar nicht zum Einsatz. Deswegen habe ich dir empfohlen, den onchange-Handler anstatt onclick zu nehmen. Der würde nämlich in beiden Fällen zum Zuge kommen.

        Auch hier: Was soll der onclick-Handler? Du möchtest hier sicher einen richtigen Submit-Button, und dann bitte auch das onsubmit-Event nutzen, nicht das onclick. Dass diese clientseitigen Überprüfungen nur zusätzlicher Komfort sein können und eine serverseitige Plausibilitätskontrolle nicht ersetzen, sollte klar sein.

        Bei klicken auf den Button "Absenden" wird eine Funktion aufgerufen, die allerdings in einem externen Javascript steht.

        Ja, und bei deaktiviertem JS passiert *gar nichts*.

        ja genau ich meinte die Return-taste. Achja hatte es mit einem richtigen Submit-Button versucht, aber da hat es genauso nicht funktioniert. DIe Verarbeitung der Formulardaten ist eben in der FUnktion check(..) in einem externen Javascript.

        Da liegt das Problem. Die Verarbeitung von Formularen mit Javascript ist höchst unzuverlässig und funktioniert nur in bestimmten Sonderfällen.
        Bei deinem Bedienkonzept bräuchtest du nicht einmal ein Formular, das bei dir eigentlich keinen Zweck erfüllt. Ein Absenden der Formularinhalte im Sinne des form-Elements findet ja ohnehin nicht statt. Wenn du es weglässt, würde auch beim Drücken der Return-Taste nichts mehr passieren.

        Schönes Wochenende,
         Martin

        --
        Du kannst dem Leben nicht mehr Tage geben.
        Aber dem Tag mehr Leben.
        1. Hi martin,

          danke für deine Tipps ;)

          Beispielsweise setzt du voraus, dass Javascript aktiviert ist, was ja nicht selbstverständlich ist. Und du setzt User voraus, die gern und viel mit der Maus hantieren.

          Um ehrlich zu sein, muss der User bei uns Javascript aktiviert haben, denn sonst geht hier einiges nicht! Einige Sachen kann man eben nur über Servlets oder Javascript realisieren und nicht ich habe entschieden Javascript zu verwenden, sondern mein Kollege und da eh schon javascript verwendet wird, ists ja egal, ob da jetz noch ne FUnktion mehr oder weniger verwendet wird oder?

          Bei User2 ist es folgendermaßen: klickt der User in das Eingabefeld, wird automatisch die Checkbox User2 angeklickt (deswegen onClick).

          Aber welcher Anwender *klickt* schon in ein Textfeld? Ja, sicher, manche tun das. Aber das ist nicht zwangsweise so. Ich bin es z.B. gewöhnt, in Formularen mit der Tab-Taste zu navigieren, die Maus kommt dabei wenig bis gar nicht zum Einsatz. Deswegen habe ich dir empfohlen, den onchange-Handler anstatt onclick zu nehmen. Der würde nämlich in beiden Fällen zum Zuge kommen.

          Habe es mal getestet, auch mit OnClick funktioniert es mit der Tab-Taste ;-) wollte es nämlich eben auf onChange ändern, weil du ja meintest das ginge dann nicht! wäre ja schon angenehmer dacht ich mir - aber geht ja auch so ;-))

          ja genau ich meinte die Return-taste. Achja hatte es mit einem richtigen Submit-Button versucht, aber da hat es genauso nicht funktioniert. DIe Verarbeitung der Formulardaten ist eben in der FUnktion check(..) in einem externen Javascript.

          Da liegt das Problem. Die Verarbeitung von Formularen mit Javascript ist höchst unzuverlässig und funktioniert nur in bestimmten Sonderfällen.
          Bei deinem Bedienkonzept bräuchtest du nicht einmal ein Formular, das bei dir eigentlich keinen Zweck erfüllt. Ein Absenden der Formularinhalte im Sinne des form-Elements findet ja ohnehin nicht statt. Wenn du es weglässt, würde auch beim Drücken der Return-Taste nichts mehr passieren.

          versteh ich jetz nicht? wieso sollte ich das Formular jetz weglassen? ich dachte dass ich dies für meine 2checkbutton brauche, um zu sehn, welcher angeklickt wurde. in meinem Javascript wird eben ausgewertet, welche User angeklickt wurde und ob das Passwort stimmt (ich weiß es ist nicht soooo sicher Passwortabfragen mit dem Javascript zu machen, aber der Kunde wollte es so). geht nur darum, dass bestimmte Dateien nicht jeder öffnen darf auf der OBerfläche und dafür brauchen wir die Passwortabfrage. beim Drücken der Return-Taste passiert jetz shcon was, da ich da ja noch ne Funktion eingebaut habe und jetz wird da auch die check-Funktion aufgerufen.

          Wünsch dir auch ein schönes WOchenende
          Gruß Kai