Wie erfasst man das Drücken der Eingabetaste? [duplicate]

Lesezeit: 4 Minuten

Benutzeravatar von Joe Yan
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;
}
<form name="form1" method="get">
    <input name="keywords" type="text" id="keywords" size="50" >
    <input type="submit" name="btn_search" id="btn_search" value="Search" 
        onClick="javascript:searching(); return false;" onKeyPress="javascript:searching(); return false;">
    <input type="reset" name="btn_reset" id="btn_reset" value="Reset">
</form>

  • 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

Benutzeravatar von TryingToImprove
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.

    – TryingToImprove

    12. Juni 2015 um 10:12

  • Sie müssen das Ereignis als Parameter übergeben.

    – Rayden

    23. Juli 2015 um 15:59


  • Danke @TryingToImprove für diese Idee.

    – Amranur Rahman

    22. Januar 2018 um 10:09

  • Bitte beachten Sie, dass e.keyCode veraltet ist Developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/keyCode

    – Ich weiß nicht, was los ist

    1. Juni 2022 um 9:08

Benutzeravatar von bipen
Zweibeiner

Verwenden onkeypress . Überprüfen Sie, ob die gedrückte Taste eingegeben wurde (keyCode = 13). Wenn ja, rufen Sie an searching() Funktion.

HTML

<input name="keywords" type="text" id="keywords" size="50"  onkeypress="handleKeyPress(event)">

JAVASCRIPT

function handleKeyPress(e){
 var key=e.keyCode || e.which;
  if (key==13){
     searching();
  }
}

Hier ist ein Ausschnitt, der es in Aktion zeigt:

document.getElementById("msg1").innerHTML = "Default";
function handle(e){
 document.getElementById("msg1").innerHTML = "Trigger";
 var key=e.keyCode || e.which;
  if (key==13){
     document.getElementById("msg1").innerHTML = "HELLO!";
  }
}
<input type="text" name="box22" value="please" onkeypress="handle(event)"/>
<div id="msg1"></div>

  • 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
    }
};

Mozilla-Dokumente

Unterstützte Browser

  • Dies ist hilfreich, aber derzeit keine vollständige Antwort. Könnten Sie es mit vollständigem Kontext konkretisieren?

    – Bob

    10. Mai 2021 um 15:50 Uhr

  • @bob event.keyCode ist veraltet und event.key wird jetzt bevorzugt

    – Mike Sallese

    28. Juli 2022 um 18:18 Uhr

Rahul Dadhichs Benutzeravatar
Rahul Dadhich

Versuche dies….

HTML inline

onKeydown="Javascript: if (event.keyCode==13) fnsearch();"
or
onkeypress="Javascript: if (event.keyCode==13) fnsearch();"

JavaScript

<script>
function fnsearch()
{
   alert('you press enter');
}
</script>

Benutzeravatar von user2753926
Benutzer2753926

Sie können Javascript verwenden

ctl.attachEvent('onkeydown', function(event) {

        try {
            if (event.keyCode == 13) {
                FieldValueChanged(ctl.id, ctl.value);
            }
            false;
        } catch (e) { };
        return true
    })

Andy – CodeRemedys Benutzeravatar
Andy – CodeRemedy

Ein bisschen generisches jQuery für Sie.

$('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.

HTML

<input name="keywords" type="text" id="keywords" size="50" onkeypress="handleEnter(this, event)" />

JS

function handleEnter(inField, e)
{
    var charCode;

    //Get key code (support for all browsers)
    if(e && e.which)
    {
        charCode = e.which;
    }
    else if(window.event)
    {
        e = window.event;
        charCode = e.keyCode;
    }

    if(charCode == 13)
    {
       //Call your submit function
    }
}

  • Habe es mit einem JSFiddle versucht, aber es hat bei mir nicht funktioniert. jsfiddle.net/94jsv

    – Seanny123

    13. September 2013 um 9:52 Uhr

1451480cookie-checkWie erfasst man das Drücken der Eingabetaste? [duplicate]

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy