2009-03-17 15 views
2

J'ai quelques champs de saisie [type = "text"] sur mon formulaire qui ne sont parfois pas assez larges pour le contenu qui y est entré.Est-il possible de réinitialiser le curseur au début d'une zone de texte lorsqu'il perd le focus?

Actuellement, si un utilisateur tape plus de texte qui correspond (mais est sous la longueur maximale), la zone de texte défile comme prévu. Quand ils sortent de la zone de texte, la zone de texte reste défilée jusqu'à la "fin" de ce qu'ils ont tapé.

J'essaie de trouver un moyen de réinitialiser la zone de texte au début lorsqu'un utilisateur tabule hors du champ.

Je regardai à la suggestion ici:

Set keyboard caret position in html textbox

... mais il ne fonctionne pas dans un événement onblur parce que la solution provoque effectivement la zone de texte pour obtenir à nouveau brièvement avant de se concentrer à nouveau bluring qui provoque une boucle infinie.

Avant d'abandonner, quelqu'un a-t-il une solution pour réinitialiser le curseur au début d'une zone de texte dans un événement onblur?

Répondre

3

Dans Internet Explorer, vous pouvez définir la propriété scrollLeft. Cela ne fonctionne pas dans Firefox, mais si vous réinitialisez la valeur à lui-même, il retournera au début. Apparemment, l'une ou l'autre méthode fonctionne dans Chrome. Je n'ai pas d'autres navigateurs disponibles pour tester en ce moment.

$("input[type=text]").blur(function() { 
    this.value = this.value; // Firefox 
    this.scrollLeft = 0; // Internet Explorer 
}); 

J'utilise jQuery parce que ce que je suis habitué, mais vous pouvez l'adapter à tout cadre/méthode utilisée pour les événements.

Questions connexes