Question

J'ai une zone de texte où je dois définir le focus / le curseur à l'index requis de la zone de texte dans le navigateur d'opéra.

Était-ce utile?

La solution 2

Votre code fonctionne bien, mais vous vous heurtez à l'opéra.

becoz l'extrait de code suivant

if(elem.createTextRange) {

est également vrai pour l'opéra, mais createTextRange ne sera supporté que par IE.

J'ai donc changé peu de modification dans votre code

function SetCaretPosition(elemId, caretPos) {
    var elem = document.getElementById(elemId);

    if (elem != null) {
        if ($.browser.msie) {
            if (elem.createTextRange) {
                var range = elem.createTextRange();
                range.move('character', caretPos);
                range.select();
            }
        }
        else {
            if (elem.selectionStart) {
                elem.focus();
                elem.setSelectionRange(caretPos, caretPos);
            }
            else
                elem.focus();
        }
    }
}

Autres conseils

Démonstration de travail

function SetCaretPosition(elemId, caretPos) {
    var elem = document.getElementById(elemId);

    if(elem != null) {
        if(elem.createTextRange) {
            var range = elem.createTextRange();
            range.move('character', caretPos);
            range.select();
        }
        else {
            if(elem.selectionStart) {
                elem.focus();
                elem.setSelectionRange(caretPos, caretPos);
            }
            else
                elem.focus();
        }
    }
}

elemId: id de l'élément

caretPos: position du curseur

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top