Déplacer le curseur avec le Javascript?

Je suis à la recherche pour déplacer le curseur exactement quatre places à l'avance de sa position actuelle, de sorte que je peux insérer un onglet correctement. J'ai déjà le code HTML d'insertion dans le signe du poste de travail, mais quand j'ai insérer le code HTML, le curseur est à gauche derrière. J'ai passé l'heure en regardant les différentes façons de le faire et j'ai essayé beaucoup d'eux, mais je peux pas faire de à travailler pour moi. Voici la plus récente de la méthode que j'ai essayé:

function moveCaret(input, distance) {
    if(input.setSelectionRange) {
        input.focus();
        input.setSelectionRange(distance, distance);
    } else if(input.createTextRange) {
        var range = input.createTextRange();
        range.collapse(true);
        range.moveEnd(distance);
        range.moveStart(distance);
        range.select();
    }
}

Il ne fait absolument rien-ne pas déplacer le curseur, de jeter des erreurs ou quoi que ce soit. Cela me laisse perplexe. Et oui, je sais que la méthode ci-dessus défini (est censé) réglez le curseur à une certaine position depuis le début de ce nœud (qui est, input), mais même cela ne fonctionne pas. Donc, exactement ce que je fais mal, et comment puis-je faire?


Edit: Basé sur les liens que l'o.v. à condition, j'ai réussi à bricoler quelque chose ensemble, c'est enfin faire quelque chose: lancer une erreur. Yay!!! Voici le nouveau code:

this.moveCaret = function(distance) {
    if(that.win.getSelection) {
        var range = that.win.getSelection().getRangeAt(0);
        range.setStart(range.startOffset + distance);
    } else if (that.win.document.selection) {
        var range = that.win.document.selection.createRange();
        range.setStart(range.startOffset + distance);
    }
}

Maintenant, cela donne l'erreur Uncaught Error: NOT_FOUND_ERR: DOM Exception 8. Des idées pourquoi?

Avez-vous essayez de définir le element.selectionStart et element.selectionEnd? Il devrait fonctionner de la croix-navigateur pour l'entrée et la textareas aussi loin que je me souvienne.
J'évitais parce que je crois qu'elle ne fonctionne pas dans les versions antérieures de IE8. Je vais prendre un coup d'oeil à elle de toute façon, si.
La seule version de IE je l'ai tester avec IE9, bonne chance. 🙂
Oui, il semble selectionStart ne fonctionne pas dans les versions antérieures d'IE, mais merci en tout cas. =)
Double Possible: stackoverflow.com/questions/1181700/... Ceci et ceci réponse semblent avoir reçu beaucoup de reconnaissance.

OriginalL'auteur Elliot Bonneville | 2012-05-28