Si vous ne pouvez pas ajouter d'identifiants à vos entrées, vous devez trouver différents sélecteurs pour ces attributs.
Vous avez probablement un nom pour ces étiquettes si vous prévoyez d'envoyer ces données. Ensuite, vous pouvez correspondre à l'entrée suivante par nom à l'aide sélecteur suivant:
$('input[name=nextInputName]')
Sinon, vous pouvez toujours trouver l'élément suivant en utilisant une combinaison d'appels de méthode children()
et parent()
, afin de traverser de l'entrée en cours à l'autre .
Personnellement, je pense que la solution la plus simple serait d'attribuer des identifiants, même dans jQuery si vous ne pouvez pas le faire en HTML: cela facilitera la mise au point automatique.
var counter = 0;
$('input').each(function() {
if (!$(this).attr('id')) {
$(this).attr('id', 'autofocus' + counter);
counter += 1;
}
});
Vous pouvez changer le sélecteur de sauter quelques-uns des éléments que vous ne voulez pas avoir la fonction de mise au point automatique.
Vous pouvez même écrire vous-même mise au point automatique en quelques lignes:
$('input[id^=autofocus]').keyup(function() {
if ($(this).val().length === $(this).attr('maxlength')) {
var id = $(this).attr('id').match(/^autofocus(\d+)$/[1]);
var nextId = Number(id) + 1;
$('#autofocus' + nextId).focus()
}
});
dire quoi maintenant? – peirix