Wie erfasst man das Drücken der Eingabetaste? [duplicate]
Lesezeit: 4 Minuten
Joe Yan
Auf meiner HTML-Seite hatte ich ein Textfeld, in das der Benutzer ein Schlüsselwort für die Suche eingeben konnte. Wenn sie auf die Suchschaltfläche klicken, generiert die JavaScript-Funktion eine URL und wird in einem neuen Fenster ausgeführt.
Die JavaScript-Funktion funktioniert ordnungsgemäß, wenn der Benutzer mit der Maus auf die Suchschaltfläche klickt, es erfolgt jedoch keine Reaktion, wenn der Benutzer die EINGABETASTE drückt.
function searching(){
var keywordsStr = document.getElementById('keywords').value;
var cmd ="http://XXX/advancedsearch_result.asp?language=ENG&+"+ encodeURI(keywordsStr) + "&x=11&y=4";
window.location = cmd;
}
Ich hoffe, das wird Ihnen helfen. stackoverflow.com/questions/9653382/onkeypress-on-aa-tag
– Prasad Rajapaksha
21. Dezember 2012 um 9:23
Das Javascript: sollte nicht in den Attributen onClick oder onKeyPress verwendet werden
– TryingToImprove
21. Dezember 2012 um 9:51 Uhr
Ich versuche mich zu verbessern
Formularansatz
Wie scoota269 sagt, sollten Sie verwenden onSubmit Stattdessen löst das Drücken der Eingabetaste in einem Textfeld höchstwahrscheinlich die Übermittlung eines Formulars aus (wenn es sich innerhalb eines Formulars befindet).
<form action="#" onsubmit="handle">
<input type="text" name="txt" />
</form>
<script>
function handle(e){
e.preventDefault(); // Otherwise the form will be submitted
alert("FORM WAS SUBMITTED");
}
</script>
Textbox-Ansatz
Wenn Sie ein Ereignis im Eingabefeld haben möchten, müssen Sie sicherstellen, dass Ihr Ereignis angezeigt wird handle() gibt false zurück, andernfalls wird das Formular gesendet.
<form action="#">
<input type="text" name="txt" onkeypress="handle(event)" />
</form>
<script>
function handle(e){
if(e.keyCode === 13){
e.preventDefault(); // Ensure it is only this code that runs
alert("Enter was pressed was presses");
}
}
</script>
Fehlerseite beim Zugriff auf JSFiddle
– Rajesh Omanakuttan
12. Juni 2015 um 9:56
Seltsam. Aber die JS-Fiddle tat dies nur für sein spezielles Szenario. Die Codebeispiele in der Antwort sind die Hauptidee.
Bei mir hat es auch nicht funktioniert. Was könnte der Grund sein?
– Sameer Sawla
4. Okt. 2014 um 15:03
Entschuldige die späte Antwort. Das Problem liegt daran, dass Javascript zum Zeitpunkt des Ladens von Windows noch nicht bereit ist. Sie können entweder die document.ready-Funktion (von jquery) verwenden. Oder wählen Sie in den Javascript-Einstellungen die Dropdown-Option „Kein Wrap-in-Body“ und es sollte funktionieren. Hier ist die Geige jsfiddle.net/Ezrwe/35 .
– Zweibeiner
21. Juni 2016 um 5:35
Verwenden event.key anstatt event.keyCode!
function onEvent(event) {
if (event.key === "Enter") {
// Submit form
}
};
$('div.search-box input[type=text]').on('keydown', function (e) {
if (e.which == 13) {
$(this).parent().find('input[type=submit]').trigger('click');
return false;
}
});
Dies funktioniert unter der Voraussetzung, dass das Textfeld und die Schaltfläche „Senden“ im selben Div eingeschlossen sind. Funktioniert hervorragend mit mehreren Suchfeldern auf einer Seite
Sie müssen einen Handler dafür erstellen onkeypress Aktion.
Ich hoffe, das wird Ihnen helfen. stackoverflow.com/questions/9653382/onkeypress-on-aa-tag
– Prasad Rajapaksha
21. Dezember 2012 um 9:23
Das Javascript: sollte nicht in den Attributen onClick oder onKeyPress verwendet werden
– TryingToImprove
21. Dezember 2012 um 9:51 Uhr