Jquery: Enter tuşuna basıldığında tıklama olayı nasıl tetiklenir


165

Enter tuşuna bastıktan sonra bir buton tıklama olayı yürütmem gerekiyor.

Şu an olduğu gibi, olay ateşlenmiyor.

Lütfen mümkünse sözdizimi konusunda bana yardımcı olun.

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

Bu, enter tuşuna basma girişimim.

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

Bir dönüş false veya dahil etmek gerekebilire.preventDefault();
geekchic

4
Yan not OLARAK: e.keyCodetamamen çapraz tarayıcı değildir. kullanın e.which.
Hashem Qolami

4
Bu durumda, veya keyupyerine KULLANMALISINIZ . / olaylar tuşuna basıldığında sürekli olarak tetiklenir: jsbin.com/uzoxuk/1/editkeypresskeydownkeypresskeydown
Hashem Qolami

Yanıtlar:


307

bunu deneyin ....

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


Jsbin.com'da Demo bul


3
Kullanıcıların "enter" tuşunu herhangi bir yerden tanımak istemeleri durumunda, $ ('# txtSearchProdAssign') yerine geçebilir ve $ (document) .keypress ....... belgesinde tetikleyebilirsiniz.
dave4jr

Erişilebilirlik perspektifinden şüpheli görünüyor. Bu kesinlikle farklı "seçim" yöntemlerine sahip her türlü cihazda işe yarar mı?
Jonny

27

Bunu dene

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

Umarım sana yardımcı olur


4
Bunu mu demek istediniz if((event.keyCode || event.which) == 13)? evet, tamamen TabFF anahtar destekleyen çapraz tarayıcı .
Hashem Qolami

Göre API , event.keyCodegereksiz, sadece kullanımıdır event.which.
konyak

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

Ayrıca , 'Enter' ile ilgili olarak, çoğu konuyu kapsamlı bir şekilde kapsayan bir form göndererek buldum .


8

Neredeyse oradaydın. İşte deneyebilirsiniz.

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

Olay aslında aslında o zaman yani iki olaydan oluşur çünkü ben insted olay trigger()tıklamak ve bağlamak için kullandım . Yani mümkün olduğunca aynı şeyleri benzemeye ve .keyupkeydownclickmousedownmouseupkeydownkeyup

İşte bir Demo


4

Yapacak başka bir ek:

Örneğin kullanarak dinamik olarak bir girdi ekliyorsanız append(), jQuery on()işlevini kullanmanız gerekir .

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

GÜNCELLEME:

Bunu yapmanın daha etkili bir yolu, bir switch deyimi kullanmak olacaktır. Siz de daha temiz bulabilirsiniz.

İşaretleme:

<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
Tek bir koşul için bir switch deyimi kullanan IMO aşırıya kaçıyor.
nyuszika7h

Yine de if ifadesinden daha etkilidir.
Daniel Dewhurst

2
Sana inanmıyorum. Bir kaynak gösterebilir misiniz?
Rolf

3

Enter tuşuna basıldığında bir düğmeye tıklamayı taklit etmeye mi çalışıyorsunuz? Öyleyse triggersözdizimini kullanmanız gerekebilir .

Değiştirmeyi deneyin

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

için

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

Sorun bu değilse, bu yayındaki çözümlere bakarak anahtar yakalama sözdiziminize ikinci kez bakmayı deneyin: jQuery Event Keypress: Hangi tuşa basıldı?


Gönderen api.jquery.com/click - Bu yöntem, ilk iki varyasyonda .on ("tıklama", işleyici) ve üçüncü sırada .trigger ("tıklama") için bir kısayoldur. böylece aynı şeyi yapardı.
Kapsül

1

Bunu dene

<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

Bu kodu kullanabilirsiniz

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

1

Sadece koda preventDefault () işlevini ekleyin,

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

0

Jquery: Yangın Düğmesi tıklama olayı Enter Düğmesini Kullanarak Şunu deneyin ::

tabindex = "0" onkeypress = "EnterEvent (olay) döndür"

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

Bu şimdi varsayılan davranış gibi görünüyor, bu yüzden yapmanız yeterli:

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

Sen olabilir bu JSFiddle bunu denemek

Test edildi: Chrome 56.0 ve Firefox (Dev Edition) 54.0a2, her ikisi de jQuery 2.2.x ve 3.x ile


2
Bu bir 'dönüş' basını yakalamıyor gibi görünüyor.
klokop

@klokop Yanılıyorsunuz, bu bir 'dönüş' veya 'enter' yakalar. Sadece kendi bağlantılarında ve bunu kendim test etmek için oluşturduğum ayrı bir sitede FF 63, Chrome 69, Safari 10.0.1 ve Opera 55 üzerinde jQuery 3 ile kendim denedim. Bu benden bir +1.
hyperum

bir düğme kullanıyorsanız, enter düğmelerini ve <a> etiketlerini girin, ancak bir yayılma alanında veya OP'nin düzenli bir giriş alanı olduğu için durum böyle değildir.
Nickfmc
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.