2009-10-28 19 views
6

'da etkinleştirilmişse, ENTER tuşuna basıldığında bir işlev çalıştırmak için bir jQuery kullanıyorum, ancak bu işlevin yalnızca belirli giriş alanı odaklanmışsa çağrılmasını istiyorum (burada imleç yanıp sönüyor).e.which ENTER tuşu yalnızca giriş alanı odağı

Geçerli jquery işlevim. .

$(document).keyup(function(e) { 
    if (e.which == 13) { 
     var page = $("#userpage").val(); 

     if(page > 0) { 
      $("#search").click(); 
     } else { 
      $('.save').click(); 
     } 
    } 
}); 

ben $ ("# arama")) (click istiyorum; yalnızca #search_text odaklanmışsa veya bazı girdilere sahipse çağrılmalıdır, çünkü daha fazla giriş alanım var ve kullanıcılar enter tuşuna basmaya eğilimlidir ve bu işleve Enter girilir.

Teşekkür ederiz.

cevap

9

Ben bu özel giriş öğesine olay dinleyicisi iliştirirdi: ikinci eğer deyimi içinde

$('#search_text').keyup(function(e) { 
    if (e.which == 13) { 
     // do it 
    } 
}); 
+1

Kabul ediyorum ama er ateş olacağından, daha doğrusu 'keyup' olay daha' keypress' olayı kullanarak öneririm ve ayrıca tüm ana akım tarayıcılarda yazdırılabilir karakterler için güvenilir bir karakter kodları vardır. –

0

Tüm belge yerine, #search_text öğesi için olayı bağlayın. Bu şekilde, yalnızca öğe odakta olduğunda tetiklenir.

1

sadece işlevine bu satırı ekleyin:

$('#search_text').focus(function() 
-1

Ayrıca eklemem gerekiyor : e.preventDefault();

$('document').keyup(function(e) { 
    if (e.keyCode == '13') { 
    e.preventDefault(); 
    var page = $("#userpage").val(); 
    } 
}); 
+0

jQuery öğesinin çağrılması, "belge" dizesini vererek olayı belge öğesine eklemez. Tırnak yerine, $ (document) 'i kullanmalısınız. Ayrıca, 'preventDefault()' dediğinizde, sonraki tüm "varsayılan" olaylar artık tetiklenmeyecektir. –

İlgili konular