Ich hatte die gleichen Anforderungen in meiner Entwicklung, also habe ich darüber geforscht. Ich habe in den letzten zwei Tagen viele Artikel gelesen und viele Lösungen wie das jQuery.tabNext () Plugin ausprobiert.
Ich hatte einige Probleme mit IE11 (alle IE-Versionen haben diesen Fehler). Wenn ein Eingabetext gefolgt von einer Nicht-Texteingabe verwendet wurde, wurde die Auswahl nicht gelöscht. Daher habe ich meine eigene tabNext () -Methode basierend auf dem Lösungsvorschlag von @Sarfraz erstellt. Ich habe auch darüber nachgedacht, wie es sich verhalten soll (nur Kreis in der aktuellen Form oder vielleicht durch das vollständige Dokument). Ich habe mich immer noch nicht um die Tabindex-Eigenschaft gekümmert, hauptsächlich, weil ich sie gelegentlich benutze. Aber ich werde es nicht vergessen.
Damit mein Beitrag für alle leicht nützlich sein kann, habe ich hier ein jsfiddle-Beispiel erstellt https://jsfiddle.net/mkrivan/hohx4nes/
Ich füge hier auch den JavaScript-Teil des Beispiels hinzu:
function clearSelection() {
if (document.getSelection) {
document.getSelection().removeAllRanges();
document.getSelection().addRange(document.createRange());
console.log("document.getSelection");
} else if (window.getSelection) {
if (window.getSelection().removeAllRanges) {
window.getSelection().removeAllRanges();
window.getSelection().addRange(document.createRange());
console.log("window.getSelection.removeAllRanges");
} else if (window.getSelection().empty) {
window.getSelection().empty();
console.log("window.getSelection.empty");
}
} else if (document.selection) {
document.selection.empty();
console.log("document.selection.empty");
}
}
function focusNextInputElement(node) {
if (node !== null) {
var inputs = $(node).parents("form").eq(0).find(":input:visible:not([disabled]):not([readonly])");
var idx = inputs.index(node) + 1;
if (idx === inputs.length) {
idx = 0;
}
var nextInputElement = inputs[idx];
nextInputElement.focus();
try {
nextInputElement.select();
} catch (e) {
}
}
}
function tabNext() {
var currentActiveNode = document.activeElement;
clearSelection();
focusNextInputElement(currentActiveNode);
}
function stopReturnKey(e) {
var e = (e) ? e : ((event) ? event : null);
if (e !== null) {
var node = (e.target) ? e.target : ((e.srcElement) ? e.srcElement : null);
if (node !== null) {
var requiredNode = $(node).is(':input')
&& !$(node).is('textarea');
if ((e.keyCode === 13) && requiredNode) {
try {
tabNext();
console.log("success");
} catch (e) {
console.log("error");
}
return false;
}
}
}
}
document.onkeydown = stopReturnKey;
Ich habe auch kommentierte Zeilen hinterlassen, damit ich meinen Gedanken folgen kann.