343 votes

Utilisez JavaScript pour placer le curseur à la fin du texte dans l'élément de saisie de texte

Quelle est la meilleure façon (et j’imagine que le moyen le plus simple) pour placer le curseur à la fin du texte dans un élément de saisie de texte via JavaScript - après mise au point a été défini pour l’élément ?

211voto

Gary Points 1655

Il y a une manière beaucoup plus simple pour y parvenir.

Utilisation de jQuery pour définir l’auditeur, mais il n’est pas nécessaire dans le cas contraire

--OU--

jQuery-moins
Emprunt `` fonction de cette réponse.

183voto

Mike Berrow Points 1020

J’ai fait face à cette même question (après le réglage de mise au point par le biais de RJS/prototype) dans Internet Explorer. Firefox sortait déjà le curseur à la fin quand il y a déjà une valeur pour le champ. IE forçait le curseur au début du texte.

La solution, à que je suis arrivé est comme suit :

Cela fonctionne dans IE7 et FF3

178voto

chenosaurus Points 610

Essayez ceci, cela a fonctionné pour moi :

Pour le curseur de se déplacer à la fin, l’entrée doit avoir le focus tout d’abord, puis quand la valeur est modifiée, elle apparaîtra goto la fin. Si vous définissez la valeur à la même, il ne changera pas en chrome.

100voto

teedyay Points 10833

Après le piratage de avec ce un peu, j'ai trouvé le meilleur moyen est d'utiliser l' setSelectionRange de la fonction si le navigateur prend en charge; si non, revenir à l'aide de la méthode de Mike Berrow de la réponse (c'est à dire remplacer la valeur par lui-même).

Je suis également la mise en scrollTop pour une valeur élevée dans le cas où nous sommes dans une verticale de défilement textarea. (À l'aide d'une valeur élevée arbitraire semble plus fiable que $(this).height() dans Firefox et google Chrome.)

Je l'ai fait c'est comme un plugin jQuery. (Si vous n'êtes pas à l'aide de jQuery j'ai confiance, vous pouvez toujours obtenir l'essentiel assez facilement.)

Je l'ai testé dans IE6, IE7, IE8, Firefox 3.5.5, Google Chrome 3.0, Safari 4.0.4, Opera 10.00.

Il est disponible sur jquery.com comme le PutCursorAtEnd plugin. Pour votre commodité, le code de la version 1.0 est comme suit:

// jQuery plugin: PutCursorAtEnd 1.0
// http://plugins.jquery.com/project/PutCursorAtEnd
// by teedyay
//
// Puts the cursor at the end of a textbox/ textarea

// codesnippet: 691e18b1-f4f9-41b4-8fe8-bc8ee51b48d4
(function($)
{
    jQuery.fn.putCursorAtEnd = function()
    {
    return this.each(function()
    {
        $(this).focus()

        // If this function exists...
        if (this.setSelectionRange)
        {
        // ... then use it
        // (Doesn't work in IE)

        // Double the length because Opera is inconsistent about whether a carriage return is one character or two. Sigh.
        var len = $(this).val().length * 2;
        this.setSelectionRange(len, len);
        }
        else
        {
        // ... otherwise replace the contents with itself
        // (Doesn't work in Google Chrome)
        $(this).val($(this).val());
        }

        // Scroll to the bottom, in case we're in a tall textarea
        // (Necessary for Firefox and Google Chrome)
        this.scrollTop = 999999;
    });
    };
})(jQuery);

22voto

Hallgeir Engen Points 217
<pre><code></code><p>Cette fonction fonctionne pour moi dans IE9, Firefox 6.x et Opera 11.x</p></pre>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X