Announcement

Collapse
No announcement yet.

DHTML - Entertaste nimmt Button nicht an

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • DHTML - Entertaste nimmt Button nicht an

    hallo,

    ich habe jetzt schon viel versucht, aber ich komme auf keine Lösung. Wenn ich den Button "Los" mit der Maus anklicke, funktioniert es, wenn ich aber die Entertaste drücke, wird die Seite neugeladen. Wie kann ich auch die Entertaste dazu bewegen, dass richtige zu machen?

    <html>
    <head>
    <script type="text/javascript">
    function berechnung()
    {
    name = document.forms[0].name.value;
    document.getElementById("ergebnis").innerHTML= name;
    }
    </script>
    </head>
    <body>
    <form>
    Name: <input id="name" type="text" size="20">
    <input type="button" onclick="berechnung()" value="Los">
    </form>
    <p id ="ergebnis">
    ...
    </p>
    </body>
    </html>

  • #2
    Moin,

    mal abgesehen davon, dass das keine HTML-Frage ist und im JavaScript-Forum besser aufgehoben gewesen wäre, kommt es ja auch darauf an, welches Element im Browser aktiv ist. Wenn der Focus auf der Adresszeile liegt, wird natürlich die Seite neu geladen. Wenn der Focus auf dem Button ist, dann führt er das auch aus.

    Dein Problem ist, dass Du glaubst, dass ein RETURN Deinen Button betätigt. Aber dem ist nicht so, und das war auch noch nie so. Ein RETURN in einem Eingabefeld schickt das dazugehörige Formular ab. Und da Du keine action angegeben hast (was, wenn wir hier schon im HTML-Forum sind, fehlerhaftes HTML ist ), dann wird die aktuelle Seite neu geladen.

    Vielleicht willst Du aus Deinem Button ja lieber ein Eingabefeld vom Typ "submit" machen und den Event-Handler onsubmit benutzen, um Deine Aktionen auszuführen.

    Liebe Grüße,
    -Efchen

    Comment


    • #3
      Bei Enter passiert das richtige, nämlich das Absenden des Formulars.

      Aber ergänze das Javascript wie folgt:

      Code:
      <html>
      <head>
      <script type="text/javascript">
      function berechnung()
      {
      name = document.forms[0].name.value;
      document.getElementById("ergebnis").innerHTML= name;
      }
      
      
      function tastatur()
      {
      var taste = event.keyCode
      if (taste == 13)
          {
          document.getElementById("ergebnis").innerHTML=document.getElementById("name").value;
          return false;
          }
      return true;
      }
      document.onkeydown = tastatur;
      
      </script>
      </head>
      <body>
      <form>
      Name: <input id="name" type="text" size="20">
      <input type="button" onclick="berechnung()"  value="Los">
      </form>
      <p id ="ergebnis">
      ...
      </p>
      </body>
      </html>
      Christian

      Comment


      • #4
        Hallo, danke für die schnellen Antworten!

        Christian,
        deine JavaScript-Funktion funktioniert sehr gut.

        Efchen,
        beim Validieren vermisst das W3C das action-Attribut nicht. Gibt es denn eine Alternative zum Formular?

        Comment


        • #5
          Originally posted by nelson View Post
          beim Validieren vermisst das W3C das action-Attribut nicht. Gibt es denn eine Alternative zum Formular?
          Das glaube ich nicht, dass das Attribut nicht vermisst wird, Dein Code hat nichtmal einen Doctype und kann daher gar nicht validiert werden. In einer Strict-Variante ist das Attribut Pflicht, eine Transitional-Variante benutzt man ja nur, um alte Websites aus dem letzten Jahrtausend auf neusten Stand zu bringen. Denn "Transitional" heißt ja "Übergang~".

          Eine Alternative zum Formular? Das kommt darauf an, was Du mit Deinem Inhalt aussagen willst! Ein Formular definiert eine Eingabemöglichkeit für Benutzer. Daten werden eingegeben, diese dann an ein Ziel weitergeleitet, um dort verarbeitet zu werden. HTML ist Semantik, also kommt es hier nur darauf an, was Dein Inhalt bedeuten soll. Im Moment macht Dein Code ja noch nicht wirklich was.
          Wiederum, wer ein Eingabefeld hat, der braucht auch ein Formular.

          Comment


          • #6
            Hi Efchen,

            vor dem Validieren hatte ich ein HTML5-Doctype hinzugefügt, vielleicht lag es daran.

            Jetzt habe ich input-Elemente einfach ohne das Elternelement form eingefügt, wäre dass denn erlaubt?

            Nichtsdestotrotz funktioniert die Benutzereingabe auf meiner erstellten Seite wie gewünscht:
            http://www.florianlippold.gmxhome.de...vergleich.html

            (P.S.: die Funktion tastatur() habe ich wieder entfernt)

            Comment


            • #7
              Formularelemente ohne FORM sollte es nicht geben...schon allein aus dem Grund, das du die Eingaben ja irgendwie an den Server senden willst
              Christian

              Comment


              • #8
                Hallo,
                Originally posted by Christian Marquardt View Post
                Formularelemente ohne FORM sollte es nicht geben...schon allein aus dem Grund, das du die Eingaben ja irgendwie an den Server senden willst
                Trotz allem ist es nach HTML-Standard nicht zwingend. Input-Elemente dürfen innerhalb aller Block- und Inline-Elemente (außer button und body) notiert werden. Das ist auch sinnvoll, da Daten nicht immer nur über das klassische Formular verarbeitet werden, sondern eben auch lokal über JS.

                Gruß Falk
                Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

                Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

                Comment

                Working...
                X