Voglio catturare la pressione del tasto TAB, annullare l'azione predefinita e chiamare la mia funzione javascript.
Voglio catturare la pressione del tasto TAB, annullare l'azione predefinita e chiamare la mia funzione javascript.
Risposte:
Modifica: poiché l'elemento viene inserito in modo dinamico, è necessario utilizzare delegatoon()
come nell'esempio, ma è necessario associarlo all'evento keydown, poiché come commenta @Marc, in IE l'evento keypress non acquisisce chiavi non di carattere:
$("#parentOfTextbox").on('keydown', '#textbox', function(e) {
var keyCode = e.keyCode || e.which;
if (keyCode == 9) {
e.preventDefault();
// call custom function here
}
});
Guarda un esempio qui .
Esempio di lavoro in jQuery 1.9:
$('body').on('keydown', '#textbox', function(e) {
if (e.which == 9) {
e.preventDefault();
// do your code
}
});
e.preventDefault();
doppio per impedire l'inserimento di spazi bianchi nella casella di testo.
$('#textbox').live('keypress', function(e) {
if (e.keyCode === 9) {
e.preventDefault();
// do work
}
});
I metodi sopra indicati non hanno funzionato per me, forse sto usando un po 'di vecchio jquery, quindi finalmente lo snippet di codice mostrato di seguito funziona per - pubblicare nel caso in cui qualcuno nella mia stessa posizione
$('#textBox').live('keydown', function(e) {
if (e.keyCode == 9) {
e.preventDefault();
alert('tab');
}
});
Una parte importante dell'uso di una chiave in giù nella scheda è sapere che la scheda proverà sempre a fare già qualcosa, non dimenticare di "restituire false" alla fine.
Ecco cosa ho fatto. Ho una funzione che gira su .blur e una funzione che scambia dove è il mio focus forma. Fondamentalmente aggiunge un input alla fine del modulo e ci va durante l'esecuzione di calcoli sulla sfocatura.
$(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");
}
}
});
È possibile acquisire una scheda evento utilizzando questa API JQuery.
$( "#yourInputTextId" ).keydown(function(evt) {
if(evt.key === "Tab")
//call your function
});
Questo ha funzionato per me:
$("[id*=txtName]").on('keydown', function(e) { var keyCode = e.keyCode || e.which; if (keyCode == 9) { e.preventDefault(); alert('Tab Pressed'); } });