Nun, ich versuche, ein Formular zu senden, indem ich die Eingabetaste drücke, aber keine Schaltfläche zum Senden anzeige. Ich möchte nach Möglichkeit nicht in JavaScript einsteigen, da alles in allen Browsern funktionieren soll (die einzige mir bekannte JS-Methode sind Ereignisse).
Im Moment sieht das Formular folgendermaßen 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>
Welches funktioniert ziemlich gut. Die Senden-Schaltfläche funktioniert, wenn der Benutzer die Eingabetaste drückt, und die Schaltfläche wird in Firefox, IE, Safari, Opera und Chrome nicht angezeigt. Die Lösung gefällt mir jedoch immer noch nicht, da es schwierig ist zu wissen, ob sie auf allen Plattformen mit allen Browsern funktioniert.
Kann jemand eine bessere Methode vorschlagen? Oder ist das so gut wie es nur geht?
Antworten:
Versuchen:
Dadurch wird der Knopf nach links aus dem Bildschirm gedrückt. Das Schöne daran ist, dass Sie eine angemessene Verschlechterung erhalten, wenn CSS deaktiviert ist.
Update - Problemumgehung für IE7
Wie von Bryan Downing + vorgeschlagen
tabindex
, um zu verhindern, dass der Tab diese Schaltfläche erreicht (von Ates Goral):quelle
position: absolute; width: 1px; height: 1px; left: -9999px;
tabindex="-1"
Ich denke, Sie sollten den Javascript-Weg gehen, oder zumindest würde ich:
quelle
keydown
vonkeypress
für eine breitere Unterstützung gewechselt , aber Sie müssen auche.preventDefault();
vor dem hinzufügen,if
wenn Sie Chrome unterstützen möchten..on('keypress'...)
stattdessen verwenden. Die Dokumente.on()
sehen so aus, als würden sie den.preventDefault()
Anruf für Sie erledigen .Hast du das versucht?
Da die meisten Browser verstehen
visibility:hidden
und es nicht wirklich so funktioniertdisplay:none
, denke ich, dass es in Ordnung sein sollte. Ich habe es nicht wirklich selbst getestet, also CMIIW.quelle
visibility: hidden
: Wie Sie in w3schools lesen können , Visibity: Keine beeinflusst noch das Layout. Wenn Sie dieses Leerzeichen vermeiden möchten, scheint die Lösung mit absoluter Positionierung für mich besser zu sein.<input type="submit" style="visibility: hidden; position: absolute;" />
position: absolute; left: -100px; width: 1px; height: 1px;
Eine andere Lösung ohne die Schaltfläche "Senden":
HTML
jQuery
quelle
Für alle, die sich diese Antwort in Zukunft ansehen, implementiert HTML5 ein neues Attribut für Formularelemente
hidden
, das automatisch angewendet wirddisplay:none
auf Ihr Element angewendet wird.z.B
quelle
Verwenden Sie folgenden Code, dies hat mein Problem in allen 3 Browsern (FF, IE und Chrome) behoben:
Fügen Sie die obige Zeile als erste Zeile in Ihren Code mit dem entsprechenden Wert für Name und Wert ein.
quelle
Anstelle des Hacks, mit dem Sie die Schaltfläche derzeit ausblenden, ist es viel einfacher,
visibility: collapse;
das Stilattribut festzulegen. Ich würde jedoch weiterhin empfehlen, ein wenig einfaches Javascript zu verwenden, um das Formular einzureichen. Soweit ich weiß, ist die Unterstützung für solche Dinge heutzutage allgegenwärtig.quelle
Setzen Sie einfach das versteckte Attribut auf true:
quelle
Die eleganteste Art, dies zu tun, besteht darin, die Senden-Schaltfläche beizubehalten, aber den Rand, den Abstand und die Schriftgröße auf 0 zu setzen.
Dadurch werden die Schaltflächenabmessungen auf 0x0 gesetzt.
Sie können dies selbst versuchen. Wenn Sie einen Umriss für das Element festlegen, wird ein Punkt angezeigt, der den äußeren Rand darstellt, der das 0x0 px-Element "umgibt".
Keine Notwendigkeit für Sichtbarkeit: versteckt, aber wenn es Sie nachts schlafen lässt, können Sie das auch in die Mischung werfen.
JS Fiddle
quelle
Der IE erlaubt nicht das Drücken der EINGABETASTE zum Senden von Formularen, wenn die Schaltfläche zum Senden nicht sichtbar ist und das Formular mehr als ein Feld enthält. Geben Sie ihm das, was er will, indem Sie ein transparentes Bild mit 1 x 1 Pixel als Senden-Schaltfläche bereitstellen. Natürlich nimmt es ein Pixel des Layouts ein, aber schauen Sie, was Sie tun müssen, um es auszublenden.
quelle
Dies ist meine Lösung, getestet in Chrome, Firefox 6 und IE7 +:
quelle
Dies funktioniert gut und ist die expliziteste Version dessen, was Sie erreichen möchten.
Beachten Sie, dass es einen Unterschied zwischen
display:none
undvisibility:hidden
für andere Formularelemente gibt.quelle
HTML5-Lösung
quelle
der einfachste Weg
quelle
Für diejenigen, die Probleme mit dem Internet Explorer haben und auch für andere.
quelle
float: left;
Entfernen, wenn es entfernt wird.Sie könnten auch dies versuchen
Sie können ein Bild mit der Breite / Höhe = 0 px einfügen
quelle
Ich arbeite mit einer Reihe von UI-Frameworks. Viele von ihnen haben eine integrierte Klasse, mit der Sie Dinge visuell verbergen können.
Bootstrap
Winkelmaterial
Brillante Köpfe, die diese Frameworks erstellt haben, haben diese Stile wie folgt definiert:
quelle
Ich habe es einer Funktion auf Dokument fertig hinzugefügt. Wenn das Formular keine Schaltfläche zum Senden enthält (alle meine Jquery-Dialogformulare haben keine Schaltflächen zum Senden), fügen Sie es hinzu.
quelle
quelle
Ich habe verwendet:
und:
in der CSS-Datei. Es hat auch für mich magisch funktioniert. :) :)
quelle