Ich möchte den TAB-Tastendruck erfassen, die Standardaktion abbrechen und meine eigene Javascript-Funktion aufrufen.
Ich möchte den TAB-Tastendruck erfassen, die Standardaktion abbrechen und meine eigene Javascript-Funktion aufrufen.
Antworten:
Bearbeiten: Da Ihr Element dynamisch eingefügt wird, müssen Sie es wie in Ihrem Beispiel delegiert verwendenon()
, aber Sie sollten es an das Keydown-Ereignis binden, da das Tastendruckereignis im IE als @Marc-Kommentare keine Nicht-Zeichen-Schlüssel erfasst:
$("#parentOfTextbox").on('keydown', '#textbox', function(e) {
var keyCode = e.keyCode || e.which;
if (keyCode == 9) {
e.preventDefault();
// call custom function here
}
});
Hier finden Sie ein Beispiel hier .
Arbeitsbeispiel in jQuery 1.9:
$('body').on('keydown', '#textbox', function(e) {
if (e.which == 9) {
e.preventDefault();
// do your code
}
});
e.preventDefault();
double, um das Einfügen von Leerzeichen in das Textfeld zu verhindern.
$('#textbox').live('keypress', function(e) {
if (e.keyCode === 9) {
e.preventDefault();
// do work
}
});
Die oben gezeigten Methoden haben bei mir nicht funktioniert. Vielleicht verwende ich eine etwas alte JQuery. Dann funktioniert das unten gezeigte Code-Snippet für das Posten - nur für den Fall, dass sich jemand in derselben Position befindet
$('#textBox').live('keydown', function(e) {
if (e.keyCode == 9) {
e.preventDefault();
alert('tab');
}
});
Ein wichtiger Teil der Verwendung eines Schlüssels auf der Registerkarte ist das Wissen, dass die Registerkarte immer versucht, bereits etwas zu tun. Vergessen Sie nicht, am Ende "false" zurückzugeben.
Hier ist was ich getan habe. Ich habe eine Funktion, die auf .blur ausgeführt wird, und eine Funktion, die vertauscht, wo mein Formularfokus liegt. Grundsätzlich fügt es am Ende des Formulars eine Eingabe hinzu und geht dorthin, während Berechnungen für Unschärfe ausgeführt werden.
$(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");
}
}
});
Mit dieser JQuery-API können Sie eine Ereignisregisterkarte erfassen .
$( "#yourInputTextId" ).keydown(function(evt) {
if(evt.key === "Tab")
//call your function
});
Das hat bei mir funktioniert:
$("[id*=txtName]").on('keydown', function(e) { var keyCode = e.keyCode || e.which; if (keyCode == 9) { e.preventDefault(); alert('Tab Pressed'); } });