Як запустити кнопку HTML при натисканні клавіші Enter у текстовому полі?


106

Отже, код, який у мене є:

<fieldset id="LinkList">
    <input type="text" id="addLinks" name="addLinks" value="http://">
    <input type="button" id="linkadd" name="linkadd" value="add">
</fieldset>

Це не в a, <form>а так само, як і в межах a <div>. Однак, коли я щось textboxввожу під назвою "addLinks", я хочу, щоб користувач міг натиснути Enter і запустити "linkadd", buttonякий потім запустить функцію JavaScript.
Як я можу це зробити?
Дякую

Редагувати: я знайшов цей код, але він, здається, не працює.

$("#addLinks").keyup(function(event){
    if(event.keyCode == 13){
        $("#linkadd").click();
    }
});

3
прив’язати до keypressта перевірити e.charCode==13(кнопка введення).
Бред Крісті

Ви додали посилання на бібліотеку jquery перед використанням вищевказаного коду?
Milind Anantwar

Так, я мав посилання на бібліотеку, не впевнений, чому вона не працює, але зараз добре. Спасибі
Бен

Так, як згадував @BradChristie keypressабо keydownзгадується у цій відповіді .
metakermit

Відповіді:


117
$(document).ready(function(){
    $('#TextBoxId').keypress(function(e){
      if(e.keyCode==13)
      $('#linkadd').click();
    });
});

5
додавання "повернути помилкове" після події клацання також корисно, щоб уникнути типового введення натискання на інші кнопки на сторінці
поглиблення

Відповідь dmitry_romanov краща, оскільки це чистий html.
Маккей

6
@McKay, ні, це не так. Кнопки можна використовувати для речей, крім форм. Насправді питання ОП явно не є формою.
Дан

2
@deebs цілком правильно, не впевнений, що я робив в день, але у мене, мабуть, мазав мозок.
Тім у MastersAllen


76

Це …… 2020. І я вважаю, що це все ще актуально.


НЕ ВИКОРИСТОВУВАТИ keypress

  1. keypressподія не спрацьовує , коли користувач натискає кнопку , яка не виробляє будь - яких символів , таких як Tab, Caps Lock, Delete, Backspace, Escape, лівий і правий Shift, функціональні клавіші ( F1- F12).

    keypressподія Мережа розробників Mozilla

    keypressПодія викликається , коли клавіша натиснута , і що ключ зазвичай виробляє значення символу . Використовуйте inputзамість цього.

  2. Це застаріло.

    keypressподії UI події (робочий проект W3C опублікований 8 листопада 2018 р.)

    • ПРИМІТКА | keypressПодія традиційно асоціюються з виявленням значення символу , а не фізичний ключа , і не може бути доступні на все ключі в деяких конфігураціях.
    • ПОПЕРЕДЖЕННЯ | Тип keypressподії визначений у цій специфікації для довідки та повноти, але ця специфікація знецінює використання цього типу події. Під час редагування контекстів автори можуть beforeinputзамість цього підписатися на подію.

НЕ ВИКОРИСТОВУВАТИ KeyboardEvent.keyCode

  1. Це застаріло.

    KeyboardEvent.keyCode Мережа розробників Mozilla

    Застарілий | Ця функція більше не рекомендується. Хоча деякі веб-переглядачі, можливо, все ще підтримують його, можливо, його вже видалено з відповідних веб-стандартів, він може бути видалений або може зберігатися лише для сумісності. Уникайте його використання та поновлюйте наявний код, якщо це можливо; див . таблицю сумісності внизу цієї сторінки, щоб направити своє рішення. Майте на увазі, що ця функція може припинити роботу в будь-який час.


Що я повинен використовувати тоді? (Добра практика)

// Make sure this code gets executed after the DOM is loaded.
document.querySelector("#addLinks").addEventListener("keyup", event => {
    if(event.key !== "Enter") return; // Use `.key` instead.
    document.querySelector("#linkadd").click(); // Things you want to do.
    event.preventDefault(); // No need to `return false;`.
});

як щодо: if (event.key == "Enter") { document.querySelector("#linkadd").click(); } ?
Анупам

2
Зауважте, що .keyпідтримується не у всіх браузерах: caniuse.com/#feat=keyboardevent-key - близько 10% людей користуються браузерами, які не підтримують його.
Мартін Турноїй

72

Є рішення, що не містить js.

Встановіть type=submitкнопку, якою ви хочете бути за замовчуванням, та type=buttonінші кнопки. Тепер у формі нижче ви можете натиснути Enter у будь-яких полях введення таRender кнопка буде працювати (незважаючи на те, що це друга кнопка у формі).

Приклад:

    <button id='close_renderer_button' class='btn btn-success'
            title='Перейти к редактированию программы'
            type=button>
      <span class='glyphicon glyphicon-edit'> </span> Edit program
    </button>
    <button id='render_button' class='btn btn-primary'
            title='Построить фрактал'
            type=submit
            formaction='javascript:alert("Bingo!");'>
      <span class='glyphicon glyphicon-send'> </span> Render
    </button>

Тестовано на FF24 та Chrome 35 ( formactionє функцією html5, але typeце не так).


17
працює лише якщо ви знаходитесь у формі, ОП не використовує форму
Андрій

@Andrew Так, це я пропустив. Тепер я це чітко бачу, дякую.
dmitry_romanov

4
@Andrew, правда, але тривіально в більшості випадків обертати його у формі, що не робить нічого ...
Стівен Чун

2
Крім того, це рішення працює на віртуальній клавіатурі iOS на клавіатурі [Go], чию дію за замовчуванням потрібно надіслати.
Елементальний

10
  1. Замініть на buttonasubmit
  2. Будьте прогресивні , переконайтеся, що у вас є версія на сервері
  3. Прив’яжіть свій JavaScript до submitобробника форми, а не до clickобробника кнопки

Натискання клавіші Enter у полі призведе до подання форми, і обробник подання запустить.


6

Ви можете додати обробник подій до свого вкладу так:

document.getElementById('addLinks').onkeypress=function(e){
    if(e.keyCode==13){
        document.getElementById('linkadd').click();
    }
}

2

Він працює, коли тип вводу = "кнопка" замінено на тип введення = "подати" для кнопки за замовчуванням, яку потрібно запустити.


1

Перш за все додайте файл бібліотеки jquery jquery і зателефонуйте в голову html.

а потім використовувати код на основі jquery ...

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

1

Це слід зробити так, я використовую jQuery ви можете писати звичайний JavaScript.
Замініть sendMessage()своєю функціональністю.

$('#addLinks').keypress(function(e) {
    if (e.which == 13) {
        sendMessage();
        e.preventDefault();
    }
});

1

На підставі деяких попередніх відповідей я придумав таке:

<form>
  <button id='but' type='submit'>do not click me</button>
  <input type='text' placeholder='press enter'>
</form>

$('#but').click(function(e) {
  alert('button press');
  e.preventDefault();
});

Погляньте на Скрипку

РЕДАКТУВАННЯ. Якщо ви не хочете додавати додаткові елементи html, ви можете це зробити лише за допомогою JS:

    $("input").keyup(function(event) {
        if (event.keyCode === 13) {
            $("button").click();
        }
    });     

0

Я знайшов how3 w3schools.com, їх сторінка для випробувань знаходиться на наступному.

https://www.w3schools.com/howto/tryit.asp?filename=tryhow_js_trigger_button_enter

Це працювало в моєму звичайному браузері, але не працювало в моєму додатку php, який використовує вбудований браузер php.

Трохи погравши, я придумав таку чисту альтернативу JavaScript, яка працює в моїй ситуації і повинна працювати в будь-якій іншій ситуації:

    function checkForEnterKey(){
        if (event.keyCode === 13) {
            event.preventDefault();
            document.getElementById("myBtn").click();
        }
    }

    function buttonClickEvent()
    {
        alert('The button has been clicked!');
    }

HTML Натисніть клавішу введення всередині текстового поля, щоб активувати кнопку.

    <br />
    <input id="myInput" onkeyup="checkForEnterKey(this.value)">
    <br />
    <button id="myBtn" onclick="buttonClickEvent()">Button</button>


-2

Я використовую кнопку кендо. Це працювало для мене.

<div class="form-group" id="indexform">
    <div class="col-md-8">
            <div class="row">
                <b>Search By Customer Name/ Customer Number:</b>
                @Html.TextBox("txtSearchString", null, new { style = "width:400px" , autofocus = "autofocus" })
                @(Html.Kendo().Button()
                    .Name("btnSearch")
                    .HtmlAttributes(new { type = "button", @class = "k-primary" })
                    .Content("Search")
                    .Events(ev => ev.Click("onClick")))
            </div>
    </div>
</div>
<script>
var validator = $("#indexform").kendoValidator().data("kendoValidator"),
          status = $(".status");
$("#indexform").keyup(function (event) {
    if (event.keyCode == 13) {
        $("#btnSearch").click();
    }
});
</script>
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.