Position du cuseur dans un input type="text"

Position du cuseur dans un input type="text" - HTML/CSS - Programmation

Marsh Posté le 30-06-2003 à 21:56:03    

Bonjour,
 
J'ai beaucoup cherché, et je ne sais pas comment faire :(  
 
J'ai un champs de formulaire :
 

<input type="text" id="edit" size="80" onKeyUp="touche();">


 
J'aimerais bien savoir comment je peut récupérer la position du curseur (caret) dans le champs texte. En fait ce que je voudrais savoir c'est s'il est au Début ou à la Fin de la chaîne. (Dans touche(), je voudrais pouvoir faire une action particulière si la flèche Droite est appuyée alors que le curseur est en fin de chaîne ou au Début pour la flèche Gauche.)
J'ai cherché un évenement qui correspondrait à çà, mais çà n'a pas l'air d'exister...
 
Précision : je fais du Javascript 'Spécifique' IE 5.5 +
 
D'autre part, quand une partie du texte (au milieu) du champs est sélectionné par l'utilisateur, je récupère la sélection avec la propriété text de document.selection.createRange().
Je connais aussi le contenu du champs, edit.value.
Je voudrais pouvoir récupérer dans des variables le début du champs non sélectionné, et pareil pour la fin.
Pour le moment, je m'en sort avec un bricolage du genre.
Remplacer le texte sélectionné par un TAG à moi ('¤µ¤' par exemple) et en faisant une recherche de la position du TAG dans edit.value. Ca marche bien, mais je trouve çà lourd :(
 
Si vous avez des idées ? ? ?
 
Merci.
Mara's dad


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 30-06-2003 à 21:56:03   

Reply

Marsh Posté le 01-07-2003 à 02:48:32    

Bon, j'ai trouvé la réponse pour la position du curseur :
 
// Récupération de la position actuelle du curseur
actuelPos = document.selection.createRange();
 
// Création d'un curseur Virtuel (edit, c'est mon champs de saisie)
testPos = edit.createTextRange();
 
// Test de la position.
if( testPos.boundingLeft == actuelPos.boundingLeft )
 
Pour la position à droite, il faut déplacer le curseur virtuel avant le test:
testPos.collapse(false);
 
Je pense que pour la sélection, çà va être du même genre...


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 29-09-2003 à 16:26:00    

J'ai une question à ce propos, le "document.selection.createRange(); " ne fonctionne que lorsque l'on a sélectionné une partie du texte, comment fait ton pour récupérer la position du curseur si rien n'est selectionné (mais le curseur se trouve bien dans le champ) ?
 
merci d'avance,
 
           Etienne

Reply

Marsh Posté le 30-09-2003 à 08:45:16    

erratum : en fait cette fonction marche même s'il n'y a pas de texte selectionné ! Un pasteHTML permet donc d'ajouter ce que l'on veut au niveau du curseur !
 :wahoo:  

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed