Jquery: як запустити подію натискання клавіші Enter


165

Мені потрібно виконати подію натискання кнопки після натискання клавіші enter.

Як на даний момент подія не розгортається.

Будь ласка, допоможіть мені, якщо можливо, синтаксис.

$(document).on("click", "input[name='butAssignProd']", function () {
   //all the action
});

це моя спроба запустити події клацання при введенні.

$("#txtSearchProdAssign").keydown(function (e) {
  if (e.keyCode == 13) {
    $('input[name = butAssignProd]').click();
  }
});

Ви , можливо , доведеться включити зворотний БРЕХНЯ абоe.preventDefault();
geekchic

4
ЯК бічна примітка: e.keyCodeбраузер не є повністю перехресним. використовувати e.whichзамість цього.
Hashem Qolami

4
У цьому випадку ви ДОЛЖНЕ використовувати keyupзамість keypressабо keydown. keypress/ keydownподії тривають
Hashem Qolami

Відповіді:


307

спробуйте це ....

$('#txtSearchProdAssign').keypress(function (e) {
 var key = e.which;
 if(key == 13)  // the enter key code
  {
    $('input[name = butAssignProd]').click();
    return false;  
  }
});   


Знайдіть демонстрацію на jsbin.com


3
Якщо люди хочуть розпізнати натискання клавіші "enter" з будь-якого місця, ви можете замінити $ ('# txtSearchProdAssign') і запустити документ $ (document) .keypress .......
dave4jr

Виглядає сумнівно з точки зору доступності. Чи буде це безумовно працювати на всіх пристроях, що мають різні "відбір" методи?
Джоні

27

Спробуйте це

$('#twitterSearch').keydown(function(event){ 
    var keyCode = (event.keyCode ? event.keyCode : event.which);   
    if (keyCode == 13) {
        $('#startSearch').trigger('click');
    }
});

Сподіваюся, це допоможе вам


4
Ви мали на увазі if((event.keyCode || event.which) == 13)? так, це повністю перехресний браузер, який підтримує Tabключ у FF.
Hashem Qolami

Згідно API , event.keyCodeце зайве, просто використовувати event.which.
konyak


8

Ви майже там були. Ось, що ви можете спробувати.

$(function(){
  $("#txtSearchProdAssign").keyup(function (e) {
    if (e.which == 13) {
      $('input[name="butAssignProd"]').trigger('click');
    }
  });
});

Я використовував trigger()для виконання клацання і прив'язування його до keyupподії, на якій було подія, keydownтому що clickподія складається з двох подій, тобто mousedownтоді mouseup. Тож нагадувати речі, як можна, keydownі з keyup.

Ось демонстрація


4

Ще одне доповнення:

Якщо ви динамічно додаєте вхід, наприклад, використовуючи append(), ви повинні використовувати функцію jQuery on().

$('#parent').on('keydown', '#input', function (e) {
    var key = e.which;
    if(key == 13) {
        alert("enter");
        $('#button').click();
        return false;
    }
});

ОНОВЛЕННЯ:

Ще більш ефективним способом зробити це буде використання оператора перемикання. Ви також можете вважати його чистішим.

Розмітка:

<div class="my-form">
  <input id="my-input" type="text">
</div>

jQuery:

$('.my-form').on('keydown', '#my-input', function (e) {
  var key = e.which;
  switch (key) {
  case 13: // enter
    alert('Enter key pressed.');
    break;
  default:
    break;
  }
});

1
IMO, що використовує оператор переключення для однієї умови, є надмірним.
nyuszika7h

Однак це більш ефективно, ніж твердження if.
Даніель Девхерст

2
Я не вірю тобі. Чи можете ви навести джерело?
Рольф

3

Ви намагаєтесь імітувати натискання на кнопку, коли натискається клавіша введення? Якщо так, можливо, вам буде потрібно використовувати triggerсинтаксис.

Спробуйте змінити

$('input[name = butAssignProd]').click();

до

$('input[name = butAssignProd]').trigger("click");

Якщо це не проблема, спробуйте по-другому переглянути синтаксис захоплення ключів, переглянувши рішення цього посту: jQuery Event Keypress: Яку клавішу натиснули?


Від api.jquery.com/click - Цей метод - це ярлик для .on ("клацання", обробник) у перших двох варіантах та .trigger ("клацання") у третьому. так що це було б точно так само.
Капсула

1

Спробуйте це

<button class="click_on_enterkey" type="button" onclick="return false;">
<script>
$('.click_on_enterkey').on('keyup',function(event){
  if(event.keyCode == 13){
    $(this).click();
  }
});
<script>

1

Ви можете використовувати цей код

$(document).keypress(function(event){
    var keycode = (event.keyCode ? event.keyCode : event.which);
    if(keycode == '13'){
       alert('You pressed a ENTER key.');
    }
});

1

Просто включіть в код функцію prevenDefault (),

$("#txtSearchProdAssign").keydown(function (e) 
{
   if (e.keyCode == 13) 
   {
       e.preventDefault();
       $('input[name = butAssignProd]').click();
   }
});

0

Jquery: Подія натискання кнопки "Пожежа" Використання кнопки Enter Натисніть спробуйте:

tabindex = "0" onkeypress = "повернути EnterEvent (подія)"

 <!--Enter Event Script-->
    <script type="text/javascript">
        function EnterEvent(e) {
            if (e.keyCode == 13) {
                __doPostBack('<%=btnSave.UniqueID%>', "");
            }
        }
    </script>
    <!--Enter Event Script-->

0

     $('#Search').keyup(function(e)
        {
            if (event.keyCode === 13) {
            e.preventDefault();
            var searchtext = $('#Search').val();
            window.location.href = "searchData.php?Search=" + searchtext + '&bit=1';
            }
        });


-4

Здається, це поведінка за замовчуванням зараз, тому достатньо зробити:

$("#press-enter").on("click", function(){alert("You `clicked' or 'Entered' me!")})

Ви можете спробувати в цьому JSFiddle

Тестовано на: Chrome 56.0 та Firefox (Dev Edition) 54.0a2, обидва з jQuery 2.2.x та 3.x


2
Здається, це взагалі не сприймає "повернення".
Клокоп

@klokop Ви неправі, це вловлює "повернення" або "вхід". Я щойно спробував це з jQuery 3 на FF 63, Chrome 69, Safari 10.0.1 та Opera 55, як за їх посиланням, так і на окремому сайті, який я створив, щоб перевірити це сам. Це +1 від мене.
гіперум

ви користуєтесь кнопкою, введіть кнопки і теги <a>, але в проміжному скажі або, якщо у OP є звичайне поле введення, це не так.
Nickfmc
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.