Ich habe das folgende Javascript auf meiner Seite, das nicht zu funktionieren scheint.
$('form').bind("keypress", function(e) {
if (e.keyCode == 13) {
e.preventDefault();
return false;
}
});
Ich möchte das Senden des Formulars bei der Eingabe deaktivieren oder, noch besser, das Senden meines Ajax-Formulars aufrufen. Beide Lösungen sind akzeptabel, aber der oben angegebene Code verhindert nicht, dass das Formular gesendet wird.
javascript
jquery
forms
form-submit
Adam Levitt
quelle
quelle
Antworten:
Wenn
keyCode
nicht gefangen wird, fangen Siewhich
:EDIT: habe es verpasst, es ist besser zu verwenden
keyup
alskeypress
BEARBEITEN 2: Wie in einigen neueren Versionen von Firefox wird das Senden von Formularen nicht verhindert. Es ist sicherer, das Tastendruckereignis auch dem Formular hinzuzufügen. Außerdem funktioniert es nicht mehr (mehr?), Indem das Ereignis nur an den Formularnamen "gebunden" wird, sondern nur an die Formular-ID. Deshalb habe ich dies deutlicher gemacht, indem ich das Codebeispiel entsprechend geändert habe.
EDIT 3: Geändert
bind()
zuon()
quelle
e.which
, sodass Sie nicht aufe.keyCode
+1 für die wahrscheinlichste Ursache dieses Problems testen müssen .return false;
dafür?e.preventDefault();
scheint genugkeyCode === 13 && !$(e.target).is('textarea')
Normalerweise wird das Formular gesendet, Enterwenn Sie sich auf Eingabeelemente konzentrieren.
Wir können den EnterSchlüssel (Code
13
) für Eingabeelemente in einem Formular deaktivieren :DEMO: http://jsfiddle.net/bnx96/325/
quelle
textareas
derselben Form verwendet wird. Verwenden$("form input")
statt$("form :input")
scheint es zu beheben. DEMO: jsfiddle.net/bnx96/279Noch kürzer:
quelle
function(e) {e.preventDefault();}
als Rückgabewerte verwenden, wenn Event-Handler veraltet sind: stackoverflow.com/a/20045473/601386Enter
und nicht nach dem Deaktivieren der Formularübermittlung über dieSubmit
Schaltfläche gestellt wurde.onClick
Ereignis zum Überprüfen eines Formulars verwenden und dennoch mit jQuery senden. Mit anderen Worten, es gibt Fälle, in denen Sie nur über Javascript / jQuery senden möchten. Während Sie AJAX mit dieser Lösung weiterhin verwenden können, wird die Basisfunktionalität dersubmit
Methode deaktiviert .which
docs.quelle
Diese Lösung funktioniert auf allen Formularen auf der Website (auch auf mit Ajax eingefügten Formularen) und verhindert, dass nur Eingabetexte eingegeben werden. Legen Sie es in eine dokumentbereite Funktion und vergessen Sie dieses Problem ein Leben lang.
quelle
Die meisten der oben genannten Antworten verhindern, dass Benutzer neue Zeilen in ein Textfeld einfügen. Wenn Sie dies vermeiden möchten, können Sie diesen speziellen Fall ausschließen, indem Sie überprüfen, welches Element derzeit den Fokus hat:
quelle
Der Overkill, jeden Tastendruck für die ENTER-Taste erfassen und testen zu müssen, nervt mich wirklich, sodass meine Lösung auf dem folgenden Browserverhalten beruht:
Durch Drücken von ENTER wird ein auslösen Klick Ereignis auf dem Submit - Button (getestet in IE11, Chrome 38, FF 31) ** (ref: http://mattsnider.com/how-forms-submit-when-pressing-enter/ )
Meine Lösung besteht also darin, die Standard-Senden-Schaltfläche (dh
<input type="submit">
) zu entfernen, damit das obige Verhalten fehlschlägt, da es keine Senden-Schaltfläche gibt, auf die Sie magisch klicken können, wenn Sie die EINGABETASTE drücken. Stattdessen verwende ich einen jQuery-Klick-Handler auf einer normalen Schaltfläche, um das Formular über die.submit()
Methode von jQuery zu senden .Demo: http://codepen.io/anon/pen/fxeyv?editors=101
** Dieses Verhalten ist nicht anwendbar, wenn das Formular nur 1 Eingabefeld enthält und dieses Feld eine Texteingabe ist. In diesem Fall wird das Formular mit der EINGABETASTE gesendet, auch wenn im HTML-Markup keine Schaltfläche zum Senden vorhanden ist (z. B. ein Suchfeld). Dies ist seit den 90er Jahren Standardverhalten des Browsers.
quelle
Wenn Sie nur die Schaltfläche "Senden bei Eingabe" und "Senden" deaktivieren möchten, verwenden Sie das Ereignis "Senden" des Formulars
Sie können "return false" durch einen Aufruf der JS-Funktion ersetzen, die alles Notwendige tut, und das Formular als letzten Schritt senden.
quelle
Sie können dies perfekt in reinem Javascript tun, einfach und ohne Bibliothek. Hier ist meine ausführliche Antwort auf ein ähnliches Thema: Deaktivieren der Eingabetaste für das Formular
Kurz gesagt, hier ist der Code:
quelle
e.target.nodeName === 'INPUT' && e.target.type !== 'textarea'
. Mit dem angegebenen Code können Formulare gesendet werden, wenn ein Radio oder ein Kontrollkästchen aktiviert ist.Ich weiß nicht, ob Sie dieses Problem bereits gelöst haben oder ob jemand versucht, es gerade zu lösen, aber hier ist meine Lösung dafür!
quelle
Die einfache Möglichkeit besteht darin, den Schaltflächentyp in HTML zu ändern und dann ein Ereignis in js ...
Änderung von diesem:
Zu
Und in js oder jquery hinzufügen:
quelle
Der folgende Code verhindert, dass der Eingabeschlüssel zum Senden eines Formulars verwendet wird. Sie können den Eingabetaste jedoch weiterhin in einem Textbereich verwenden. Sie können es je nach Bedarf weiter bearbeiten.
quelle
Wenn Sie in Firefox bei der Eingabe die Eingabetaste drücken, wird die obere Form gesendet. Die Lösung finden Sie im Formular "Senden". Fügen Sie Folgendes hinzu:
quelle
3 Jahre später hat keine einzige Person diese Frage vollständig beantwortet.
Der Fragesteller möchte die Übermittlung des Standardformulars abbrechen und sein eigenes Ajax anrufen. Dies ist eine einfache Anfrage mit einer einfachen Lösung. Es ist nicht erforderlich, jedes in jede Eingabe eingegebene Zeichen abzufangen.
Das Formular unter der Annahme hat einen Submit - Button, ob ein
<button id="save-form">
oder<input id="save-form" type="submit">
, tun:quelle
Ich habe
which
gehört, dass dies nicht empfohlen wird. Ändern Sie daher die Antwort mit der besten Bewertung .ref. https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/which
quelle
Wenn die Datei fertig ist (Laden abgeschlossen), erkennt das Skript jedes Ereignis für den Schlüssel "Eintrag" und deaktiviert das dahinter stehende Ereignis.
quelle
Komplettlösung in JavaScript für alle Browser
Der obige Code und die meisten Lösungen sind perfekt. Ich denke jedoch, dass die beliebteste "kurze Antwort" unvollständig ist.
Hier ist die gesamte Antwort. in JavaScript mit nativer Unterstützung für IE 7.
Diese Lösung verhindert nun, dass der Benutzer mit der Eingabetaste sendet, und lädt die Seite nicht neu oder führt Sie zum oberen Rand der Seite, wenn sich Ihr Formular irgendwo darunter befindet.
quelle
Wie wäre es damit:
Dies sollte alle Formulare mit Senden-Schaltflächen in Ihrer App deaktivieren.
quelle