Comment définir la position du curseur dans un champ de texte à l'aide de jQuery ? J'ai un champ de texte avec du contenu, et je veux que le curseur de l'utilisateur soit positionné à un certain décalage lorsqu'il se concentre sur le champ. Le code devrait ressembler à ceci :
$('#input').focus(function() {
$(this).setCursorPosition(4);
});
À quoi ressemblerait l'implémentation de cette fonction setCursorPosition ? Si vous aviez un champ de texte avec le contenu abcdefg, cet appel entraînerait le positionnement du curseur comme suit : abcd**|**efg.
Java dispose d'une fonction similaire, setCaretPosition. Existe-t-il une méthode similaire en javascript ?
Mise à jour : J'ai modifié le code du CMS pour qu'il fonctionne avec jQuery comme suit :
new function($) {
$.fn.setCursorPosition = function(pos) {
if (this.setSelectionRange) {
this.setSelectionRange(pos, pos);
} else if (this.createTextRange) {
var range = this.createTextRange();
range.collapse(true);
if(pos < 0) {
pos = $(this).val().length + pos;
}
range.moveEnd('character', pos);
range.moveStart('character', pos);
range.select();
}
}
}(jQuery);
78 votes
$(this).get(0).setSelectionRange)
? Vous savez que c'est exactement la même chose quethis.setSelectionRange
JQuery ne fait littéralement rien pour vous, mais il est plus lent et plus difficile à lire.2 votes
Pour ajouter au commentaire de @bobince, la fonction devrait itérer pour chacun des éléments sélectionnés et retourner ceci. Le code correct est dans ma réponse.
21 votes
@bobince n'est pas tout à fait correct non plus. this' n'est pas le nœud DOM, mais l'objet jQuery. Ainsi, $(this).get(0).setSelectionRange est identique à this.get(0).setSelectionRange, et non à this.setSelectionRange.
0 votes
$(this)[0] est plus rapide que $(this).get(0)
0 votes
Consultez ce tutoriel pour une solution complète. webdesignpluscode.blogspot.com/2017/05/