JQuery: Keyup, wie kann ich verhindern, dass das default-Verhalten der Pfeiltasten (up & down) und Eingabe-Taste?
JavaScript (JQuery)
$('input').keyup(function(e)
{
var code = e.keyCode ? e.keyCode : e.which;
switch(code)
{
case 38:
break;
case 40:
break;
case 13:
break;
default:
return;
}
});
HTML
<form method="post" action="/">
<input type="text" name="text" />
<button type="submit">Submit</button>
</form>
Habe ich 2 Probleme:
1) Das caret-Zeichen sollte nicht bewegen, wenn ich auf den bis - Taste.
Beispielsweise in Chrome, wenn ich drücken Sie die up-Taste bewegt den Cursor nach Links. Aber ich habe nur dieses problem in Chrome. Es funktioniert einwandfrei in FF.
2) Wenn ich drücken Sie die geben Sie key, ich will nicht die form eingereicht werden.
BTW, ich will diese Arbeit mit keyup und nicht keypress.
Ich würde schätzen, irgendwelche Ideen. Danke.
InformationsquelleAutor der Frage | 2011-06-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich glaube nicht, können Sie
preventDefault()
(das ist, was Sie brauchen, um zu verwenden zu stoppen Sie den browser aus der Durchführung der Standardaktion für einen Schlüssel) auf derkeyup
Ereignis - es wird gefeuert nach das default-event hat bereits stattgefunden. Sehen auf dieser Seite für mehr.Wenn Sie können, erwägen Sie die Verwendung der
keydown
statt.Als für das stoppen der form von der Abgabe, Sie könnten binden Sie an die die
submit
- Ereignis undreturn false;
wenn das senden wurde nicht ausgelöst durch die submit-Schaltfläche (siehe jQuery: wie man auf welche Schaltfläche geklickt wurde nach form der Einreichung?wie diese zu ermitteln).Auf der anderen Seite, können Sie auch binden
keypress
für die form und bei Enter gedrückt wird, stornieren Vorlage in der gleichen Weise (code ungetestet):InformationsquelleAutor der Antwort no.good.at.coding
Anstelle der Pause könnten Sie versuchen, ein false zurückgeben, oder machen Sie eine Funktion aufrufen und verwenden http://api.jquery.com/event.preventDefault/
Beispiel:
case 40: function(e) {e.preventDefault;}
Auch
$('form').submit(function() {return false});
aufhören würde Einsendungen insgesamt, aber ich bin mir nicht sicher, dass das, was Sie nach?InformationsquelleAutor der Antwort thugsb
Um zu verhindern, dass das Formular abgesendet wurde, wenn der Benutzer die EINGABETASTE drückt Sie zu binden, müssen die submit-Funktion des Formulars aus und gibt false zurück, wenn das Ereignis ausgelöst wurde, die enter-Taste betätigt wird.
für den Up - /Down-Taste drücken, verwenden Sie
e.preventDefault();
InformationsquelleAutor der Antwort devmatt
Ist die zuverlässigste Methode ist eine Kombination von
e.preventDefault()
e.stopPropagation()
undreturn false
;Hier ist, was es Aussehen könnte:
Auch, um zu verhindern, dass das Formular abgesendet wurde, mit der enter-Taste sollten Sie das Formular
submit
Veranstaltung:InformationsquelleAutor der Antwort Alex Weber
Wie es scheint, dass Sie eigentlich aufhören KÖNNEN die Standardeinstellung für "ENTER", während mit keyup(); ... jQuery api schreibt über sich hier: http://api.jquery.com/keyup/
Hier ist, wie Sie zu tun haben:
InformationsquelleAutor der Antwort skolind