Ich habe ein Standard-Anmeldeformular - ein E-Mail-Textfeld, ein Kennwortfeld und eine Senden-Schaltfläche für ein AIR-Projekt, das HTML / jQuery verwendet. Wenn ich im Formular die Eingabetaste drücke, verschwindet der gesamte Inhalt des Formulars, aber das Formular wird nicht gesendet. Weiß jemand, ob dies ein Webkit-Problem ist (Adobe AIR verwendet Webkit für HTML) oder ob ich etwas durcheinander gebracht habe?
Ich habe es versucht:
$('.input').keypress(function (e) {
if (e.which == 13) {
$('form#login').submit();
}
});
Aber das hat weder das Clearing-Verhalten gestoppt noch das Formular gesendet. Mit dem Formular ist keine Aktion verbunden - könnte das das Problem sein? Kann ich eine Javascript-Funktion in die Aktion einfügen?
Antworten:
Schauen Sie sich diese Stackoverflow-Antwort an: event.preventDefault () vs. return false
Im Wesentlichen ist "return false" dasselbe wie das Aufrufen von
e.preventDefault
unde.stopPropagation()
.quelle
Neben der Rückgabe falsch, wie Jason Cohen erwähnt. Möglicherweise müssen Sie auch Default verhindern
quelle
return false
In einem von jQuery verwalteten Ereignis rufen Sie automatisch e.preventDefault ()Sie wissen nicht, ob dies hilfreich ist, aber Sie können versuchen, einen Klick auf die Schaltfläche "Senden" zu simulieren, anstatt das Formular direkt zu senden. Ich habe den folgenden Code in der Produktion und er funktioniert einwandfrei:
Hinweis: jQuery ('# submit'). Focus () wird die Schaltfläche animiert, wenn die Eingabetaste gedrückt wird.
quelle
Kehren Sie zurück
false
, um zu verhindern, dass der Tastendruck fortgesetzt wird.quelle
Gibt es einen Grund, warum Sie die Eingabetaste einhaken und testen müssen?
Könnten Sie nicht einfach eine hinzufügen?
auf Ihr Formular und muss es natürlich gesendet werden, wenn die Eingabe gedrückt wird? Sie können sogar dann die
onsubmit
Aktion des Formulars verknüpfen und von dort aus eine Validierungsfunktion aufrufen, wenn Sie möchten ...Sie können das sogar
onsubmit
als Test verwenden, um festzustellen, ob Ihr Formular gesendet wird, aber es funktioniert nicht, wenn Sie anrufenform.submit()
.quelle
return false;
.Hier ist eine Möglichkeit, dies als JQuery-Plugin zu tun (falls Sie die Funktionalität wiederverwenden möchten):
Wenn Sie nun ein
<input>
Element mit dieser Art von Funktionalität dekorieren möchten, ist dies so einfach:quelle
Sie können
onsubmit="return false"
den Formularcode auf der Seite auch einfach hinzufügen , um das Standardverhalten zu verhindern.Verknüpfen (
.bind
oder.live
) dassubmit
Ereignis des Formulars mit einer beliebigen Funktion mit jQuery in der Javascript-Datei.Hier ist ein Beispielcode, um zu helfen:
HTML
Javascript + jQuery
Dies funktioniert ab dem 13.04.2011 mit Firefox 4.0 und jQuery 1.4.3
quelle
Das ist mein Code:
quelle
Um die Zugänglichkeit zu gewährleisten, sollten Sie dies auch verwenden, um Ihren Schlüsselcode zu bestimmen:
quelle
Einfach hinzufügen für eine einfache Implementierung. Sie können einfach ein Formular erstellen und dann die Schaltfläche "Senden" ausblenden:
Zum Beispiel:
quelle
Ich benutze jetzt
Zuerst habe ich dem Submit-Button einen Eventhandler hinzugefügt, der einen Fehler für mich verursacht hat.
quelle
Ich habe heute herausgefunden, dass das Tastendruckereignis nicht ausgelöst wird, wenn die Eingabetaste gedrückt wird. Vielleicht möchten Sie stattdessen zu keydown () oder keyup () wechseln.
Mein Testskript:
Die Ausgabe in der Konsole bei Eingabe von "A Enter B" auf der Tastatur:
Sie sehen in der zweiten Sequenz, dass der 'Tastendruck' fehlt, aber der Keydown- und Keyup-Registercode '13' gedrückt / losgelassen wird. Wie pro jQuery Dokumentation über die Funktion keypress () :
Getestet auf IE11 und FF61 auf Server 2012 R2
quelle
In HTML-Codes:
In Js-Codes:
quelle
Versuche dies:
quelle