Jquery: cara memicu event klik pada menekan tombol enter


165

Saya perlu menjalankan acara klik tombol setelah menekan tombol enter.

Karena saat ini acara tidak menembak.

Tolong Bantu saya dengan sintaks jika memungkinkan.

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

ini adalah usaha saya untuk memecat acara klik pada saat masuk.

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

Anda mungkin harus menyertakan return false atau ae.preventDefault();
geekchic

4
SEBAGAI catatan tambahan: e.keyCodetidak sepenuhnya lintas browser. gunakan e.whichsaja.
Hashem Qolami

4
Dalam hal ini, Anda HARUS menggunakan keyupalih-alih keypressatau keydown. keypress/ keydownevents memicu terus menerus ketika tombol ditekan: jsbin.com/uzoxuk/1/edit
Hashem Qolami

Jawaban:


307

coba ini ....

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


Temukan Demo di jsbin.com


3
Jika orang ingin mengenali penekanan tombol "enter" dari mana saja, Anda dapat mengganti $ ('# txtSearchProdAssign') dan memicu pada dokumen $ (dokumen). Tekan tombol .......
dave4jr

Terlihat dipertanyakan dari perspektif aksesibilitas. Apakah ini pasti akan bekerja di semua jenis perangkat yang memiliki metode "seleksi" yang berbeda?
Jonny

26

Coba ini

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

Semoga ini bisa membantu Anda


4
Apakah maksud Anda if((event.keyCode || event.which) == 13)? ya, ini sepenuhnya lintas peramban yang mendukung Tabkunci dalam FF.
Hashem Qolami

Menurut API , event.keyCodeitu berlebihan, cukup gunakan event.which.
konyak

12
$('#txtSearchProdAssign').keypress(function (e) {
  if (e.which == 13) {
    $('input[name = butAssignProd]').click();
    return false;  
  }
});

Saya juga baru saja menemukan mengirimkan formulir di 'Enter' yang mencakup sebagian besar masalah secara komprehensif.


8

Anda hampir sampai. Inilah yang bisa Anda coba.

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

Saya sudah terbiasa trigger()mengeksekusi klik dan mengikatnya pada keyupacara insted keydownkarena clickacara terdiri dari dua peristiwa sebenarnya yaitu mousedownkemudian mouseup. Sehingga menyerupai hal-hal yang sama mungkin dengan keydowndan keyup.

Ini Demo


4

Tambahan lain untuk dibuat:

Jika Anda menambahkan input secara dinamis, misalnya menggunakan append(), Anda harus menggunakan on()fungsi jQuery .

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

MEMPERBARUI:

Cara yang lebih efisien untuk melakukan ini adalah dengan menggunakan pernyataan switch. Anda mungkin merasa lebih bersih juga.

Markup:

<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 menggunakan pernyataan switch untuk satu kondisi adalah berlebihan.
nyuszika7h

Ini lebih efisien daripada pernyataan if.
Daniel Dewhurst

2
Aku tidak percaya kamu Bisakah Anda mengutip sumber?
Rolf

3

Apakah Anda mencoba meniru klik pada tombol ketika tombol enter ditekan? Jika demikian, Anda mungkin perlu menggunakan triggersintaks.

Coba ubah

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

untuk

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

Jika ini bukan masalahnya, maka coba perhatikan sintaks tangkap kunci Anda dengan melihat solusi di posting ini: jQuery Keypress Peristiwa: Tombol mana yang ditekan?


Dari api.jquery.com/click - Metode ini adalah cara pintas untuk .on ("klik", penangan) di dua variasi pertama, dan .trigger ("klik") di yang ketiga. sehingga akan melakukan hal yang persis sama.
Kapsul

1

Coba ini

<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

Anda dapat menggunakan kode ini

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

1

Cukup sertakan fungsi preventDefault () dalam kode,

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

0

Jquery: acara klik Tombol Api Menggunakan Tombol enter Tekan coba ini ::

tabindex = "0" onkeypress = "return EnterEvent (event)"

 <!--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

Ini tampaknya menjadi perilaku default sekarang, jadi cukup untuk melakukannya:

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

Kamu bisa mencobanya di JSFiddle ini

Diuji pada: Chrome 56.0 dan Firefox (Dev Edition) 54.0a2, keduanya dengan jQuery 2.2.x dan 3.x


2
Ini sepertinya tidak menangkap pers 'kembali' sama sekali.
klokop

@klokop Anda salah, ini menangkap 'kembali' atau 'masuk'. Saya baru saja mencobanya sendiri dengan jQuery 3 di FF 63, Chrome 69, Safari 10.0.1, dan Opera 55, baik pada tautan mereka dan di situs terpisah yang saya buat untuk mengujinya sendiri. Itu +1 dari saya.
hyperum

Anda menggunakan tombol, masukkan akan memicu tombol dan tag <a> tetapi pada rentang mengatakan atau karena OP memiliki bidang input reguler, ini bukan masalahnya.
Nickfmc
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.