Utløse et knappeklikk med JavaScript på Enter-tasten i en tekstboks.

Jeg har ett tekstfelt og én knapp (se nedenfor). Hvordan kan jeg bruke JavaScript til å utløse knappens klikkhendelse når Enter-tasten trykkes inne i tekstboksen?

Det er allerede en annen send-knapp på min nåværende side, så jeg kan ikke bare gjøre knappen til en send-knapp. Og jeg vil bare at Enter -tasten skal klikke på denne spesifikke knappen hvis den trykkes fra denne tekstboksen, ikke noe annet.

<input type="text" id="txtSearch" />
<input type="button" id="btnSearch" value="Search" onclick="doSomething();" />
Løsning

I jQuery vil følgende fungere:

$("#id_of_textbox").keyup(function(event) {
    if (event.keyCode === 13) {
        $("#id_of_button").click();
    }
});
$("#pw").keyup(function(event) {
    if (event.keyCode === 13) {
        $("#myButton").click();
    }
});

$("#myButton").click(function() {
  alert("Button code executed.");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

Username:<input id="username" type="text"><br>
Password: <input id="pw" type="password"><br>
Submit

Eller i vanlig JavaScript vil følgende fungere:

document.getElementById("id_of_textbox")
    .addEventListener("keyup", function(event) {
    event.preventDefault();
    if (event.keyCode === 13) {
        document.getElementById("id_of_button").click();
    }
});
document.getElementById("pw")
    .addEventListener("keyup", function(event) {
    event.preventDefault();
    if (event.keyCode === 13) {
        document.getElementById("myButton").click();
    }
});

function buttonCode()
{
  alert("Button code executed.");
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

Username:<input id="username" type="text"><br>
Password: <input id="pw" type="password"><br>
Submit
Kommentarer (15)

Fant ut av dette:

<input type="text" id="txtSearch" onkeypress="return searchKeyPress(event);" />
<input type="button" id="btnSearch" Value="Search" onclick="doSomething();" />

<script>
function searchKeyPress(e)
{
    // look for window.event in case event isn't passed in
    e = e || window.event;
    if (e.keyCode == 13)
    {
        document.getElementById('btnSearch').click();
        return false;
    }
    return true;
}
</script>
Kommentarer (3)

Gjør knappen til et send-element, slik at det skjer automatisk.

<input type = "submit"
       id = "btnSearch"
       value = "Search"
       onclick = "return doSomething();"
/>

Merk at du trenger et ``-element som inneholder inndatafeltene for å få dette til å fungere (takk til Sergey Ilinsky).

Det er ikke en god praksis å omdefinere standard oppførsel, Enter -tasten skal alltid kalle innsendingsknappen på et skjema.

Kommentarer (3)