2009-09-16 8 views

Répondre

0

ur code fonctionne bien, mais se affrontement à l'opéra.

becoz le code suivant snippet

if(elem.createTextRange) { 

est vrai aussi à l'opéra, mais createTextRange « ll pris en charge que par IE.

j'ai donc peu de modifications dans le code ur changé

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(); 
     } 
    } 
} 
+0

Si vous inversez la détection et cherchez elem.selectionStart, vous n'avez pas besoin d'utiliser la détection du navigateur - toujours la meilleure pratique :) – hallvors

+0

(Et Opera a un support limité pour createTextRange() et le reste de l'API de sélection IE. Je vais l'enlever à nouveau parce que c'est incomplet - c'est fondamentalement de ma faute si je pense à toutes ces années que le sous-ensemble de fonctionnalités pour lesquelles j'ai écrit des tests était suffisant ..) – hallvors

0

Working Demo

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

+0

caretPos = 8, mais dans FF, le curseur est au début de la zone de texte – Natrium

+0

même code que je utilise dans l'opéra, mais sa va début – Santhosh

Questions connexes