2010-07-25 9 views
2

J'ai une entrée de largeur fixe de type texte. Si l'utilisateur devait entrer une valeur longue dans ce champ, je voudrais que le début de la valeur soit affiché lorsque l'entrée n'a plus de focus.Afficher le début de la valeur d'entrée HTML sur flou avec JavaScript

Le comportement par défaut dans FF et IE laisse la vue de la valeur du champ dans le même état. Chrome d'autre part semble se comporter comme je veux, il montre le début de la valeur.

J'ai essayé de réinitialiser la position du caret dans IE à l'aide de la méthode Select() de l'objet textRange mais cela semble réappeler l'événement de flou entraînant une chaîne récursive (je ne sais pas pourquoi, mais c'est un problème distinct).

Quelqu'un a-t-il des suggestions? Il doit y avoir un moyen facile de le faire?

Répondre

3

J'ai assemblé ce code, il fonctionne sur IE8. Le setTimeout de 1ms est parce que IE affiche automatiquement la deuxième valeur si la valeur d'une zone de texte est défini deux fois de suite (surprenante):

function resetPosition(element){ 
    var v = element.value; 
    element.value=""; 
    setTimeout(function(){element.value = v;},1); 
} 

également testé sur IE7 et discret sur Chrome (qui automatiquement fait).

+0

Merci. J'avais essayé d'effacer et de réinitialiser la valeur, mais je n'avais pas pensé à utiliser setTimout. Travaille pour moi. – James