381 Stimmen

Absenden eines Formulars durch Drücken der Eingabetaste, ohne dass eine Schaltfläche zum Absenden vorhanden ist

Ich versuche, ein Formular durch Drücken der Eingabetaste abzuschicken, aber es wird keine Schaltfläche zum Abschicken angezeigt. Ich möchte nicht in JavaScript zu erhalten, wenn möglich, da ich alles auf allen Browsern (die einzige JS Weg, den ich kenne, ist mit Ereignissen) arbeiten möchten.

Im Moment sieht das Formular wie folgt aus:

<form name="loginBox" target="#here" method="post">
    <input name="username" type="text" /><br />
    <input name="password" type="password" />
    <input type="submit" style="height: 0px; width: 0px; border: none; padding: 0px;" hidefocus="true" />
</form>

Das funktioniert ziemlich gut. Die Schaltfläche "Submit" funktioniert, wenn der Benutzer die Eingabetaste drückt, und die Schaltfläche wird in Firefox, IE, Safari, Opera und Chrome nicht angezeigt. Dennoch gefällt mir die Lösung nicht, da es schwer zu sagen ist, ob sie auf allen Plattformen mit allen Browsern funktionieren wird.

Kann jemand eine bessere Methode vorschlagen? Oder ist dies die beste Methode, die es gibt?

9 Stimmen

Ein kleiner Punkt, der einige Zeichen in Ihrem CSS einsparen könnte und in der Regel automatisch von Minifiern erledigt wird: Sie benötigen keine Einheiten für Null-Längenmessungen. 0px = 0pt = 0em = 0em usw.

1 Stimmen

@pwdst danke für den Hinweis auf diese - ich bin von der Python-Welt, so "explizit ist besser als implizit", und wirklich fragen, ob dies der Fall in CSS ist, oder haben CSS Schöpfer ein anderes Idiom?

3 Stimmen

Null ist hier die Ausnahme von der Regel @ericmjl - 0px == 0em == 0% == 0vh == 0vh usw. Bei anderen Längenmaßen (die nicht Null sind) ist es nicht nur schlechte Praxis, sondern verstößt auch gegen die Normen, keine Einheiten anzugeben, und Sie werden ein unterschiedliches Verhalten in den User Agents (Browsern) feststellen. Siehe developer.mozilla.org/de-US/docs/Web/CSS/length y drafts.csswg.org/css-values-3/#lengths

4voto

Marty Punkte 61
input.on('keypress', function(event) {
    if ( event.which === 13 ) {
        form.submit();
        return false;
    }
});

3voto

waney Punkte 402

Sie können auch Folgendes versuchen

<INPUT TYPE="image" SRC="0piximage.gif" HEIGHT="0" WIDTH="0" BORDER="0">

Sie könnten ein Bild mit Breite/Höhe = 0 px einfügen

3voto

Jekis Punkte 3930

Für diejenigen, die Probleme mit dem IE haben und auch für andere.

{
    float: left;
    width: 1px;
    height: 1px;
    background-color: transparent;
    border: none;
}

2voto

seePatCode Punkte 472

Ich habe es zu einer Funktion auf Dokument bereit hinzugefügt. Wenn es keine Submit-Taste auf dem Formular (alle meine Jquery Dialog Forms haben keine Submit-Schaltflächen), fügen Sie es.

$(document).ready(function (){
    addHiddenSubmitButtonsSoICanHitEnter();
});
function addHiddenSubmitButtonsSoICanHitEnter(){
    var hiddenSubmit = "<input type='submit' style='position: absolute; left: -9999px; width: 1px; height: 1px;' tabindex='-1'/>";
    $("form").each(function(i,el){
        if($(this).find(":submit").length==0)
            $(this).append(hiddenSubmit);
    });
}

0voto

QXE company Punkte 38

Hier ist der Code, der bei mir funktioniert hat und Ihnen sicher helfen wird

<form name="loginBox" target="#here" method="post">
  <input name="username" type="text" /><br />
  <input name="password" type="password" />
  <input type="submit" />
</form>

<script type="text/javascript">
  $(function () {
    $("form").each(function () {
      $(this)
        .find("input")
        .keypress(function (e) {
          if (e.which == 10 || e.which == 13) {
            this.form.submit();
          }
        });
      $(this).find("input[type=submit]").hide();
    });
  });
</script>

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