2

J'ai le problème suivant. Dans l'entrée de texte qui fonctionne comme un auto-complétion, certaines des suggestions qu'elle renvoie sont plus mauvaises que cela. Le problème vient quand vous quittez le champ. Dans IE, le curseur de texte est positionné à la fin de la chaîne suggérée, de sorte que vous ne pouvez en voir que la dernière partie. J'ai donc utilisé le code ci-dessous pour corriger cela et cela fonctionne sous IE6, mais dans IE8 cela ne fonctionne pas, le champ est toujours sélectionné et je ne peux rien sélectionner sur la page.createTextRange - comportement étrange dans IE8

Ma question est quelle est la bonne façon de déplacer le curseur dans le début du champ de saisie, après je le quitte?

 
$('#myAutocompleter').blur(function(){ 
    textRange = this.createTextRange(); 
    textRange.collapse(true); 
    textRange.select(); 
}); 

(le code utilisé est écrit en jQuery.)

Répondre

0

Je ne suis pas sûr que je comprends votre question, mais IE a son propre ensemble de méthodes pour traiter la sélection de texte sur une page, de sorte que serait être pourquoi il se comporte différemment.

Regardez ici pour un tutoriel: http://www.quirksmode.org/dom/range_intro.html

Et ici pour la compatibilité: http://www.quirksmode.org/dom/w3c_range.html

Si ce n'est pas votre problème, essayez de faire un mouseup ou cliquez sur contrôle des événements à l'intérieur de flou et de mettre le code de sélection là-bas? Peut-être que cela fera que la sélection s'éloignera du champ de saisie avant de la placer là où se trouve la sélection.

+0

Ma question en général comment IE pour aligner le texte dans « la saisie de texte déposé » dans la gauche après que je laisse l'entrée. Dans Mozilla FF, ceci est géré par le navigateur mais dans IE ce n'est pas le cas. J'ai essayé de le faire avec du code dans mon post mais ça ne marche pas bien. – bozhidarc

0

J'ai eu une situation similaire où je voulais voir le haut/bas de quelque chose en fonction de choses comme ça. Je utilisé le plugin jQuery scrollTo

).scrollTo('100%') 

).scrollTo('0%') 

EDIT 1: Je l'utilise dans ce domaine:

<textarea cols="57" rows="2" class="cssTextarea cptEntryArea"></textarea> 

avec ce code:

$(".cptEntryArea").change(function() 
     { 
      $(this).scrollTo('0%'); 
    }); 
+0

Je ne sais pas exactement comment votre situation est comme la mienne, mais scrollTo() ne peut pas être utilisé sur un champ de texte. – bozhidarc

3

Je crois que ce que vous êtes à la recherche sont .moveStart et .moveEnd méthodes de la gamme de texte:

$('#myAutocompleter').blur(function(){ 
    textRange = this.createTextRange(); 
    textRange.collapse(true); 
    textRange.moveEnd('character',0); 
    textRange.moveStart('character',0); 
    textRange.select(); 
}); 

(Testé fonctionnelle dans IE8)