2009-08-21 16 views

cevap

211

Düzenleme: senin eleman dinamik olarak eklenmesini olduğundan, sizin örnekte olduğu gibi delegated on() kullanmak zorunda, ancak çünkü @Marc yorum olarak, keydown olaya bağlamak gerekir, IE tuşa basma olayı etmiyor 't olmayan karakter tuşları yakalamak:

$("#parentOfTextbox").on('keydown', '#textbox', function(e) { 
    var keyCode = e.keyCode || e.which; 

    if (keyCode == 9) { 
    e.preventDefault(); 
    // call custom function here 
    } 
}); 

Kontrol örneği here. jQuery 1.9 içinde

+0

IE4 + 'da SEKME'yi bastığımda bu IE8'de çalışmaz \ –

+0

+ olay tetiklenmiyor (ancak herhangi bir alfanümerik tuşa basıyorsa) ... .live kullanmalıyım (' keypress ', fn) –

+0

Sadece canlı olarak çalışıyorsa, belki de metin kutusu öğenizi dinamik olarak ekliyorsunuz, eğer öğe zaten sayfada bulunuyorsa, bu işe yarayacak, bu örneği kontrol edin: http://jsbin.com/oguhe – CMS

12
$('#textbox').live('keypress', function(e) { 
    if (e.keyCode === 9) { 
     e.preventDefault(); 
     // do work 
    } 
}); 
+2

Ayrıca Kimliği txtName ile TextBox var); fonksiyonun ilk satırında. –

+0

bu benim IE6 + –

+0

@ Jon'da çalışmıyor, keypress IE – Marc

17

Çalışma örneği:

$('body').on('keydown', '#textbox', function(e) { 
    if (e.which == 9) { 
     e.preventDefault(); 
     // do your code 
    } 
}); 
+1

make 'e.preventDefault(); . – stil

7

Üstü gösterilen yöntemler i biraz eski jquery kullanıyorum edilebilir, benim için işe yaramadı, daha sonra nihayet aşağıda gösterilen kod parçacığı için çalışır - ihtimale gönderme benim aynı pozisyonda birileri

$('#textBox').live('keydown', function(e) { 
    if (e.keyCode == 9) { 
     e.preventDefault(); 
     alert('tab'); 
    } 
}); 
4

hep sonunda "return false" unutma, zaten bir şeyler yapmaya çalışacağız o sekmeyi bilmektir tırnağını aşağı bir anahtar kullanarak önemli bir kısmı.

İşte yaptığım şey. .blur üzerinde çalışan bir işlev ve form odakımın bulunduğu yeri değiştiren bir işlev var. Temel olarak, formun sonuna bir girdi ekler ve bulanıklık üzerine hesaplamalar yaparken oraya gider.

$(this).children('input[type=text]').blur(timeEntered).keydown(function (e) { 
     var code = e.keyCode || e.which; 
     if (code == "9") { 
      window.tabPressed = true; 
      // Here is the external function you want to call, let your external 
      // function handle all your custom code, then return false to 
      // prevent the tab button from doing whatever it would naturally do. 
      focusShift($(this)); 
      return false; 
     } else { 
      window.tabPressed = false; 
     } 
     // This is the code i want to execute, it might be different than yours 
     function focusShift(trigger) { 
      var focalPoint = false; 
      if (tabPressed == true) { 
       console.log($(trigger).parents("td").next("td")); 
       focalPoint = $(trigger).parents("td").next("td"); 

      } 
      if (focalPoint) { 
       $(focalPoint).trigger("click"); 
      } 
     } 
    }); 
2

bu deneyin:

$('#contra').focusout(function(){ 
    $('#btnPassword').focus(); 
}); 
1

varsayalım sen (e.preventDefault kullanın varsayılan eylemi iptal etmek,

$("[id*=txtName]").on('keydown', function(e) { 
    var keyCode = e.keyCode || e.which; 
    if (keyCode == 9) { 
    e.preventDefault(); 
    alert('Tab Pressed'); 
} 
}); 
İlgili konular