SEKME tuşa basmayı yakalamak, varsayılan eylemi iptal etmek ve kendi javascript işlevimi çağırmak istiyorum.
SEKME tuşa basmayı yakalamak, varsayılan eylemi iptal etmek ve kendi javascript işlevimi çağırmak istiyorum.
Yanıtlar:
Düzenleme: Öğeniz dinamik olarak eklendiğinden, örneğinizde olduğu gibi temsilcion() seçmeniz gerekir, ancak @Marc yorumları olarak IE'de keypress olayı karakter olmayan anahtarları yakalamadığı için keydown olayına bağlamanız gerekir:
$("#parentOfTextbox").on('keydown', '#textbox', function(e) {
var keyCode = e.keyCode || e.which;
if (keyCode == 9) {
e.preventDefault();
// call custom function here
}
});
Buradan bir örnek kontrol edin .
JQuery 1.9 çalışma örneği:
$('body').on('keydown', '#textbox', function(e) {
if (e.which == 9) {
e.preventDefault();
// do your code
}
});
e.preventDefault();boşlukları metin kutusuna eklemeyi önlemek için iki kat yapın.
$('#textbox').live('keypress', function(e) {
if (e.keyCode === 9) {
e.preventDefault();
// do work
}
});
Yukarıda gösterilen yöntemler benim için işe yaramadı, ben biraz eski jquery kullanıyorum olabilir, o zaman nihayet aşağıda gösterilen kod snippet'i çalışır - aynı pozisyonda biri olması durumunda gönderme
$('#textBox').live('keydown', function(e) {
if (e.keyCode == 9) {
e.preventDefault();
alert('tab');
}
});
Sekmede bir anahtar kullanmanın önemli bir kısmı, sekmenin her zaman zaten bir şey yapmaya çalışacağını bilmektir, sonunda "yanlış döndürmeyi" unutmayın.
İşte yaptığım şey. Ben .blur üzerinde çalışan bir işlevi ve form odak nerede takas bir işlevi var. Temelde formun sonuna bir girdi ekler ve bulanıklık üzerinde 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");
}
}
});
Bu JQuery API'sını kullanarak bir olay sekmesi yakalayabilirsiniz .
$( "#yourInputTextId" ).keydown(function(evt) {
if(evt.key === "Tab")
//call your function
});
Bu benim için çalıştı:
$("[id*=txtName]").on('keydown', function(e) { var keyCode = e.keyCode || e.which; if (keyCode == 9) { e.preventDefault(); alert('Tab Pressed'); } });