Ich habe ein HTML-Formular mit einer einzigen submit
Eingabe, aber auch verschiedenen button
Elementen. Wenn der Benutzer die Eingabetaste drückt, würde ich erwarten, dass das Formular tatsächlich gesendet wird, aber stattdessen (zumindest in Chrome 15) stelle ich fest, dass es das erste auslöst button
(da dies früher im HTML als in der submit
Eingabe erfolgt) , Ich vermute).
Ich weiß, dass Sie Browser im Allgemeinen nicht zwingen können, eine bestimmte submit
Eingabe zu bevorzugen , aber ich dachte wirklich, dass sie submit
Eingaben gegenüber button
Elementen bevorzugen würden . Gibt es eine kleine Änderung, die ich am HTML vornehmen kann, damit dies funktioniert, oder muss ich eine Art Javascript-Ansatz wählen?
Hier ist ein grobes Modell des HTML:
<form action="form.php" method="POST">
<input type="text" name="field1"/>
<button onclick="return myFunc1()">Button 1</button>
<input type="submit" name="go" value="Submit"/>
</form>
Antworten:
Sie benötigen kein JavaScript, um Ihre Standard-Senden-Schaltfläche oder -Eingabe auszuwählen. Sie müssen es nur mit markieren
type="submit"
, und die anderen Schaltflächen markieren sie mittype="button"
. In Ihrem Beispiel:<button type="button" onclick="return myFunc1()">Button 1</button> <input type="submit" name="go" value="Submit"/>
quelle
type="button"
ist, dass standardmäßig Schaltflächenelemente vorhanden sindtype="submit"
. Die Prämisse in der Frage, dass es nur einen einzigen Senden-Button gab, war also tatsächlich falsch.Sie können jQuery verwenden:
$(function() { $("form input").keypress(function (e) { if ((e.which && e.which == 13) || (e.keyCode && e.keyCode == 13)) { $('button[type=submit] .default').click(); return false; } else { return true; } }); });
quelle
button[type=submit]
, vorausgesetzt, Sie haben Ihre Standard-Submit-Schaltfläche mit derdefault
CSS-Klasse markiert .Versuchen Sie dies, wenn die Eingabetaste gedrückt wurde, können Sie es zum Beispiel so erfassen. Ich habe neulich eine Antwort entwickelt. Geben Sie die HTML-Schaltfläche ausgewählt an , um zu sehen, ob dies hilft.
Geben Sie den Formularnamen an, z. B.
yourFormName
sollten Sie das Formular senden können, ohne sich auf das Formular zu konzentrieren.document.onkeypress = keyPress; function keyPress(e){ var x = e || window.event; var key = (x.keyCode || x.which); if(key == 13 || key == 3){ // myFunc1(); document.yourFormName.submit(); } }
quelle
$("form#submit input").on('keypress',function(event) { event.preventDefault(); if (event.which === 13) { $('button.submit').trigger('click'); } });
quelle
Ich habe gerade ein Problem damit. Meins war ein Sturz vom Ändern des
input
zu einembutton
und ich hatte einen schlecht geschriebenen/>
Tag-Terminator:So hatte ich:
<button name="submit_login" type="submit" class="login" />Login</button>
Und habe es gerade geändert, um:
<button name="submit_login" type="submit" class="login">Login</button>
Jetzt funktioniert wie ein Zauber, immer die nervigen kleinen Dinge ... HTH
quelle
Da es nur eine (oder bei dieser Lösung möglicherweise nicht einmal eine) Schaltfläche zum Senden gibt, ist hier eine jQuery-basierte Lösung, die für mehrere Formulare auf derselben Seite funktioniert ...
<script type="text/javascript"> $(document).ready(function () { var makeAllFormSubmitOnEnter = function () { $('form input, form select').live('keypress', function (e) { if (e.which && e.which == 13) { $(this).parents('form').submit(); return false; } else { return true; } }); }; makeAllFormSubmitOnEnter(); }); </script>
quelle
Ich habe dies gerade in Chrome und Firefox und IE10 gewirbelt.
Wie oben erwähnt - stellen Sie sicher, dass Sie mit type = "button", "reset", "submit" usw. markiert haben, um sicherzustellen, dass die richtige Schaltfläche korrekt kaskadiert und ausgewählt wird.
Vielleicht auch alle so einstellen, dass sie die gleiche Form haben (dh alle, die für mich funktionierten)
quelle