J'essaie de placer le curseur dans un champ de texte avec une fonction de mise au point. J'ai fait quelques recherches, mais aucune des solutions fournies ne semblait fonctionner dans Google Chrome. Dans Internet Explorer et Firefox, cette solution fonctionne bien:
Les js:
$('#Search').focus(function() {
var SearchInput = $('#Search');
var strLength= SearchInput.val().length;
SearchInput.focus();
SearchInput[0].setSelectionRange(strLength, strLength);
});
Le HTML:
<input type="text" id="Search" value="Hello World" />
Voici le lien vers mon jsfiddle .
Existe-t-il un moyen de faire fonctionner cela dans Google Chrome aussi?
Il semble que l'événement focus soit déclenché avant que le curseur ne soit placé lorsque vous concentrez une entrée, une solution de contournement hacky serait d'utiliser un setTimeout comme ceci:
$('#Search').focus(function() {
setTimeout((function(el) {
var strLength = el.value.length;
return function() {
if(el.setSelectionRange !== undefined) {
el.setSelectionRange(strLength, strLength);
} else {
$(el).val(el.value);
}
}}(this)), 0);
});
Essayez ce violon: http://jsfiddle.net/esnvh/26/
Modifié à 0 ms, comme @SparK l'a souligné, cela suffit pour pousser jusqu'à la fin de la file d'attente d'exécution.
Code mis à jour
Référence: http://css-tricks.com/snippets/jquery/move-cursor-to-end-of-textarea-or-input/
setSelectionRange
n'est pas pris en charge sur IE, Opera & Safari
Je vous suggère de faire quelque chose comme ça (fonctionne sur IE, Chrome, Safari, Firefox).
$('#Search').on('mouseup', function() {
var element = $(this)[0];
if (this.setSelectionRange) {
var len = $(this).val().length * 2;
element.setSelectionRange(len, len);
}
else {
$(this).val($(this).val());
$(this).focus();
}
element.scrollTop = 9999;
});
Essayez ceci: http://jsfiddle.net/r5UVW/4/
Utilisez l'événement mouseup pour cela:
$("#Search").mouseup(function () {
this.setSelectionRange(this.value.length, this.value.length);
});
Pour info, actuellement, la saisie de nombre ne prend pas en charge setSelectionRange()
, donc une solution rapide consiste simplement à sélectionner le texte à l'aide de .select()
. Sur les navigateurs de bureau, cela met en surbrillance le texte, sur les mobiles, cela déplace le curseur directement à la fin du texte.