2010-07-27 7 views
1

J'ai un champ de saisie: input type = "text" class = "rulerInputText" id = "rulerInputBox" readonly
J'ai un code Javascript pour détecter le texte sélectionné et jouer avec.Sélection du texte de la zone de saisie précise

Le problème survient lorsque je permets à l'utilisateur de sélectionner du texte. Le texte est basique avec des espaces. Lorsque l'utilisateur commence à sélectionner, il n'y a pas de problème, mais lorsqu'un espace est atteint, l'utilisateur le sélectionne et le mot suivant est automatiquement sélectionné. Essentiellement, je veux empêcher la sélection automatique du mot entier. Je veux seulement sélectionner exactement ce que l'utilisateur souhaite sélectionner avec la souris.

Est-ce possible ou dois-je utiliser une sorte de hacks Javascript fous pour y arriver?

+0

Pouvez-vous poster un exemple visible pour montrer de quoi vous parlez? Pas sûr que je suis. – spinon

+0

C'est une simple zone de texte: . Tout ce qu'il aurait à faire est d'obtenir ce que l'utilisateur sélectionne, de la position de départ à la fin. Ma méthode alternative consiste à créer une position de départ et une position de fin sur la div, à la sous-traiter et à obtenir le texte sélectionné. –

Répondre

0

Ceci est une fonctionnalité du système d'exploitation. Le système d'exploitation fourni zone de texte fait la sélection automatique pour mieux user experience. Vous n'avez aucun contrôle ici . (Je viens de confirmer sur IE/Windows7)

+0

ce serait le navigateur fournissant la sélection automatique, pas le système d'exploitation. Vous avez un certain contrôle sur elle, variant entre les navigateurs, mais pas la façon de sélectionner le texte, autant que je sache. –

+0

Eh bien, c'est juste déprimant. Maintenant, je dois tout faire pour avoir une meilleure méthode de sélection de texte. Merci de votre aide. –

+0

@Ankit: Pour ma part, je ne trouve pas ce comportement pour constituer une "meilleure" expérience utilisateur. – Robusto

0

Ceci est une caractéristique de IE spécifiquement; aucun autre navigateur n'a ce comportement. Il s'agit d'une fonction délibérée de "sélection intelligente" (*) copiée à partir d'Office, bien que dans les nouvelles versions d'Office, cela fonctionne moins énervant, vous permettant de revenir à la sélection de caractères si vous déplacez le pointeur.

Pour autant que je sache, il n'y a pas moyen de le désactiver dans IE, que ce soit du côté du client ou du serveur, car Microsoft pense que c'est une fonction géniale. Soupir. Même les hacks JavaScript ne fournissent pas un moyen de contourner. À peu près tout ce que vous pourriez faire serait de mettre des espaces invisibles entre chaque caractère, de sorte que IE pensait que chaque caractère était un second mot. par exemple. essayez de sélectionner:

f​o​o b​a​r b​o​f z​o​t 

ils ont des caractères Unicode U + 200B ZERO WIDTH SPACE entre les lettres. Cela a des effets secondaires cependant; Si l'utilisateur essaie d'éditer ou de copier-coller le texte, il aura des caractères invisibles et bizarres.

(*:.... Comme d'habitude, « intelligent » signifie deuxième deviner l'utilisateur, généralement de se tromper, et insistant sur le fait qu'il est juste alias « stupide » courir un mile de tout ce qui se qualifie à puce)

+0

Je pensais utiliser cette méthode, puisque l'utilisateur a seulement besoin de voir une représentation visuelle. Puis j'ai réalisé que je ne pouvais pas facilement modifier la couleur de fond de la sélection, et ainsi de suite, donc il pourrait être plus facile de créer mon propre script personnalisé. –

Questions connexes