Durch Drücken in einem Textfeld eine nicht ausgelöst Onclick-Ereignis von Submit-Button in Firefox

StackOverflow https://stackoverflow.com/questions/1642815

Frage

ich diese HTML-Seite, die sehr einfach ist, es enthält ein Textfeld und eine Schaltfläche einreichen, was ich will, ist, wenn etwas in das Textfeld eingeben und die Eingabetaste drücken die Funktion in das OnClick-Ereignis der Schaltfläche aufgerufen wird. Es funktioniert in IE und Google Chrome, aber nicht in FireFox arbeitet, ist dies ein normales Verhalten von FireFox oder es ist etwas fehlt hier?

<html>
<head>
<script language="javascript">
function callMe()
{
   alert("You entered: " + document.getElementById("txt").value);
}
</script>
</head>
<body>
<input type="text" id="txt" />
<input type="submit" value="Submit" onclick="callMe()" />
</body>
</html>
War es hilfreich?

Lösung

Aus dem Beschreibung des onclick Ereignisses

  

Das onclick Ereignis tritt auf, wenn das Zeigegerät Taste auf ein Element geklickt wird. Dieses Attribut kann mit den meisten Elementen verwendet werden.

Es gibt keine Garantie gibt, dass die UA ein solches Ereignis erzeugen sollte, auch wenn nicht mit einem Zeigegerät und etwas klicken.

Sie wollen wahrscheinlich das onsubmit Ereignis in einem Formular:

  

Das onsubmit Ereignis tritt ein, wenn ein Formular abgeschickt wird. Es gilt nur für das FORM Element.

Sie müssen ein Formular um Ihr Textfeld und Schaltfläche wickeln, aber:

<html>
  <head>
    <script language="javascript">
      function callMe()
      {
        alert("You entered: " + document.getElementById("txt").value);
      }
    </script>
  </head>
  <body>
    <form onsubmit="callMe()" action="#">
      <input type="text" id="txt" />
      <input type="submit" value="Submit" />
    </form>
  </body>
</html>

Andere Tipps

Versuchen Sie, eine Form mit einem onsubmit Zugabe - das sollte funktionieren (getestet mit FF 3.5):

<html>
<head>
<script language="javascript">
function callMe()
{
   alert("You entered: " + document.getElementById("txt").value);
}
</script>
</head>
<body>
<form onsubmit="callMe()">
<input type="text" id="txt" />
<input type="submit" value="Submit" />
</form>
</body>
</html>

[Bearbeiten Zunächst mißverstanden ich die Situation und stellte eine andere Antwort.]

Funktioniert nicht in Chrome für mich entweder (4.0.223.11).

Das Problem ist der Unterschied bei der Behandlung von s ohne

- wenn Sie eine umschließende hinzufügen -Element, das OnClick Element Feuer (Sie sollten immer noch die Handler einreichen das Formular stattdessen als Johannes Rössel zu Recht empfiehlt.

[Bearbeiten hinzugefügt eine Notiz für HTML5]

Beachten Sie, dass a href <= "http://www.whatwg.org/specs/web-apps/current-work/multipage/association-of-controls-and-forms.html#implicit-submission" rel = "nofollow noreferrer"> HTML5-Spezifikation erwähnt das Click-Ereignis auf dem Submit-Button Dispatching:

Benutzerprogramme können eine Schaltfläche in jeder Form herzustellen als die Standard-Schaltfläche des Formulars zu sein. Dies sollte die erste Submit-Button in Baum, um dessen Form Eigentümer ist, dass Formularelement sein, aber Benutzeragenten eine andere Taste wählen kann, wenn eine andere für die Plattform besser geeignet wäre. Wenn unterstützt die Plattform der Benutzer implizit ein Formular einreichen zu lassen (zum Beispiel auf einigen Plattformen schlagen Sie die Taste „Enter“, während ein Textfeld implizit das Formular abschickt fokussiert ist), dann so tun, muss die Formular verursachen Verhalten Standardschaltfläche der Aktivierung, falls vorhanden , ausgeführt werden soll.

Beachten Sie, dass die Umsetzung Enter basierte Aktivierung ist nicht erforderlich (obwohl es in den Desktop-Browsern implementiert ist), und die „Aktivierungsmethode“ (klicken Ereignis) verwendet werden kann, wenn der Eingang ein Teil eines Formulars ist ( "hat eine Form ") betrieben. Die Definition der „form owner“ zugrunde, einen Elternteil oder ein form Attribut hat.

Ich sehe die Diskussion nicht, die zu dieser Entscheidung geführt, also, wenn Sie Fragen haben, können Sie auf öffentlich-html-Mailingliste fragen können, wo die Spezifikation diskutiert wird.

Soweit ich weiß, kann man nicht nennen ‚OnClick‘ in einem ‚TextBox‘. Es hat außerhalb des TextBox sein.

Wenn Sie Ihren Text in das Textfeld, linke Maus geben woanders klicken Sie auf Ihrer Seite, drücken Sie die Eingabetaste, funktioniert das OnClick-Ereignis, seltsam genug.

Wenn Sie eine Arbeit um finden lassen Sie es uns wissen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top