88 Stimmen

Wie wird ein Formular abgeschickt, wenn die Eingabetaste gedrückt wird?

Kann mir jemand sagen, wie ich ein HTML-Formular abschicken kann, wenn die Return-Taste gedrückt wird und keine Schaltflächen im Formular vorhanden sind? Die Schaltfläche "Senden" ist nicht vorhanden . Ich verwende stattdessen ein benutzerdefiniertes Div.

93voto

John Hunter Punkte 3942

Um das Formular abzuschicken, wenn die Eingabetaste gedrückt wird, erstellen Sie eine Javascript-Funktion nach diesem Muster.

function checkSubmit(e) {
   if(e && e.keyCode == 13) {
      document.forms[0].submit();
   }
}

Dann fügen Sie das Ereignis zu dem Bereich hinzu, den Sie z. B. für das div-Tag benötigen:

<div onKeyPress="return checkSubmit(event)"/>

Dies ist allerdings auch das Standardverhalten von Internet Explorer 7 (wahrscheinlich auch von früheren Versionen).

69voto

Chris Marasti-Georg Punkte 33348

IMO ist dies die sauberste Antwort:

<form action="" method="get">
  Name: <input type="text" name="name"/><br/>
  Pwd: <input type="password" name="password"/><br/>
  <div class="yourCustomDiv"/>
  <input type="submit" style="display:none"/>
</form>

Besser noch, wenn Sie Javascript verwenden, um das Formular mit dem benutzerdefinierten div zu übermitteln, sollten Sie auch Javascript verwenden, um es zu erstellen und den Stil display:none für die Schaltfläche festzulegen. Auf diese Weise sehen auch Benutzer mit deaktiviertem Javascript die Schaltfläche "Submit" und können darauf klicken.


Es wurde festgestellt, dass display:none den IE veranlasst, die Eingabe zu ignorieren. Ich habe eine neues JSFiddle-Beispiel das als Standardformular beginnt und die progressive Erweiterung verwendet, um die Übermittlung auszublenden und das neue Div zu erstellen. Ich habe das CSS-Styling von StriplingWarrior .

56voto

StriplingWarrior Punkte 141402

Ich habe verschiedene javascript/jQuery-basierte Strategien ausprobiert, aber ich hatte immer wieder Probleme. Das letzte Problem, das auftrat, betraf die versehentliche Übermittlung, wenn der Benutzer die Eingabetaste drückt, um aus der in den Browser integrierten Liste zur automatischen Vervollständigung auszuwählen. Ich bin schließlich zu dieser Strategie übergegangen, die bei allen von meinem Unternehmen unterstützten Browsern zu funktionieren scheint:

<div class="hidden-submit"><input type="submit" tabindex="-1"/></div>

.hidden-submit {
    border: 0 none;
    height: 0;
    width: 0;
    padding: 0;
    margin: 0;
    overflow: hidden;
}

Dies ist ähnlich wie die derzeit akzeptierte Antwort von Chris Marasti-Georg, aber durch die Vermeidung von display: none scheint sie in allen Browsern korrekt zu funktionieren.

Update

Ich habe den obigen Code bearbeitet, um eine negative tabindex damit die Tabulatortaste nicht erfasst wird. Obwohl dies technisch gesehen in HTML 4 nicht validiert wird, enthält die HTML5-Spezifikation eine Sprache, mit der es so funktioniert, wie die meisten Browser es ohnehin schon implementiert haben.

16voto

Joel Purra Punkte 22337

Verwenden Sie die <button> Tag. Aus dem W3C-Standard:

Schaltflächen, die mit dem BUTTON-Element erstellt wurden, funktionieren genauso wie Schaltflächen, die mit dem INPUT-Element erstellt wurden, bieten jedoch umfangreichere Rendering-Möglichkeiten: Das BUTTON-Element kann einen Inhalt haben. Ein BUTTON-Element, das ein Bild enthält, funktioniert beispielsweise wie ein INPUT-Element, dessen Typ auf "Bild" eingestellt ist, und kann diesem ähneln, aber der Typ des BUTTON-Elements erlaubt Inhalte.

Im Grunde gibt es ein weiteres Tag, <button> die erfordert kein Javascript die auch ein Formular einreichen können. Es kann ähnlich gestaltet werden wie ein <div> Tag (einschließlich <img /> innerhalb des Schaltflächen-Tags). Die Schaltflächen aus dem <input /> Tag sind nicht annähernd so flexibel.

<button type="submit">
    <img src="my-icon.png" />
    Clicking will submit the form
</button>

Es gibt drei Typen, die auf dem Bildschirm eingestellt werden können <button> ; sie entsprechen dem <input> Tastenarten.

<button type="submit">Will submit the form</button>
<button type="reset">Will reset the form</button>
<button type="button">Will do nothing; add javascript onclick hooks</button>

Normen

Ich benutze <button> Tags mit css-sprites und ein bisschen css Styling, um farbenfrohe und funktionale Formularschaltflächen zu erhalten. Beachten Sie, dass es möglich ist, css für, zum Beispiel zu schreiben, <a class="button"> Links zum Styling mit dem <button> Element.

9voto

Hawk Punkte 521

Ich glaube, das ist es, was Sie wollen.

//<![CDATA[

//Send form if they hit enter.
document.onkeypress = enter;
function enter(e) {
  if (e.which == 13) { sendform(); }
}

//Form to send
function sendform() {
  document.forms[0].submit();
}
//]]>

Jedes Mal, wenn eine Taste gedrückt wird, wird die Funktion enter() aufgerufen. Wenn die gedrückte Taste mit der Eingabetaste (13) übereinstimmt, wird die Funktion sendform() aufgerufen und das erste gefundene Formular wird gesendet. Dies gilt nur für Firefox und andere standardkonforme Browser.

Wenn Sie diesen Code nützlich finden, stimmen Sie bitte für mich!

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X