Ich entwerfe ein Formular zum Auslösen onsubmit
durch Drücken von "Enter" auf der Tastatur, und das Ereignis wird nicht auf bestimmten Browsern abhängig davon ausgelöst Felder sind in der Form.HTML-Formular onsubmit schlägt auf bestimmten Browsern mit versteckten Übermittlungsschaltfläche und readonly Eingabe
Hier sind einige minimale Arbeitsbeispiele für Formulare, die auslösen und nicht auslösen submit
.
Firefox, Chrome und Opera sind mit den folgenden Formularen zufrieden, aber Internet Explorer 11 und Safari 11 werden onsubmit
auf dem dritten Formular nicht auslösen.
Form 1:
<form>
<input type="text">
<input type="submit" style="display:none;">
</form>
Form 2:
<form>
<input type="text">
<input readonly>
<input type="submit">
</form>
Form 3 (abgehört):
<form>
<input type="text">
<input readonly>
<input type="submit" style="display:none;">
</form>
Wie kann ich die dritte Form erhalten submit
auszulösen auf diesen Browsern beim Drücken 'Enter', während der Submit Button ausgeblendet bleibt und kein hacky keypress Event-Handler verwendet wird? Eine Erklärung dafür, warum die dritte Form das Ereignis nicht auslöst, wäre sehr hilfreich.
Here ist ein JSFiddle für Ihre Bequemlichkeit.
Bearbeiten: Die akzeptierte Lösung der zugehörigen Frage setzt display: none
auf die Schaltfläche Senden, die dieses Problem in Safari/IE nicht gelöst hätte.
_ "Eine Erklärung dafür, warum die dritte Form das Ereignis nicht auslöst, wäre sehr hilfreich." _ - weil es keine Sendeschaltfläche hat (wie @Dummy sagte, mit 'display: none' ist es so, als ob es gar nicht da wäre) , _and_ mehr als ein Feld, das die implizite Übergabe blockiert (die beiden Textfelder) - dies ist ein spezifiziertes Verhalten in HTML5, siehe meine Antwort auf eine vorherige Frage ähnlicher Art hier: https://Stackoverflow.com/a/28709364/1427878 – CBroe
Der Schwerpunkt der anderen Frage war Text Eingabefelder, so dass ich nur zitiert "und dessen Typ Attribut ist in einer der die folgenden Zustände: Text, [...] "aus der Spezifikation, aber diese Liste geht weiter," Suche, URL, Telefon, E-Mail, Passwort, Datum, Uhrzeit, Nummer "- also wenn Sie das" readonly "_send_ müssen Wert mit den anderen Formulardaten (momentan noch ein 'text' Feld, weil das Standard ist, wenn' type' weggelassen wird), dann würde ich vorschlagen, dass Sie es durch eine 'versteckte' Eingabe ersetzen (kümmert sich um den Wert zu senden, und Blockiert die implizite Übergabe nicht) und fügt denselben Wert hinzu, den der Benutzer in einem 'span'-Element sehen kann. – CBroe