|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() Inscription : janvier 2011 Messages : 16 ![]() |
Bonjour, Je ne trouve pas de solution a mon probleme :
J'ai une page xhtml avec des input text. Quand j'appuis sur TAB ca passe d'un champ au champ suivant sauf que ca me selectionne tout le texte de mon input. Je voudrais que TAB ne me selectionne pas le texte que j'ai dans mon input et que le curseur (clavier) se mette a la fin de mon texte. Est ce possible ? exemple : j'ai 2 champs; dans le champ1 il y a ecrit "toto" et dans le champ2 il y a ecrit "tutu". Quand je suis dans le champ1 je fait TAB. Je me retrouve dans mon champ2 avec "tutu" selectionner !! si bien que quand j’appuie sur la touche "a" ca m'efface "tutu" et m'ecrit "a" a la place ! Moi je voudrais que quand j'appuie sur "a" ca fasse "tutua". j'utilise Chrome (derniere version) Merci d'avance ! |
|
|
00
|
|
|
#2 | ||
|
Expert Confirmé Sénior
![]() Romain VALERIPOOête Inscription : avril 2008 Messages : 2 572 ![]() |
Tu trouveras probablement cette discussion intéressante
(si tu n'es pas anglophone ou que tu as du mal à l'adapter chez toi pour une quelconque raison... n'hésite pas ^^) Sur FF/Chrome, ça devrait ressembler à quelque chose comme : Code :
__________________
...pour les linguistes et les curieux >>> générateur de phrases aléatoires __________________ |
||
|
|
00
|
|
|
#3 | ||
|
Invité régulier
![]() Inscription : janvier 2011 Messages : 16 ![]() |
Merci RomainVALERI, J'ai essayé ta solution dans tous les sens mais ca marche pas ! j'ai vu aussi d'autre facon de le faire mais rien y fait !!
voila mon code : Code :
Des idées ? |
||
|
|
00
|
|
|
#4 |
![]() ![]() ![]() Inscription : mars 2008 Messages : 2 686 ![]() |
Bonjour,
Tout d'abord il manque un </tr> mais je suppose que c'est simplement un code d'exemple. Ensuite faites attention au nom que vous donnez. Il y a l'input avec l'id precision, ainsi que le label avec le for precision.
|
|
|
00
|
|
|
#5 | ||
![]() ![]() Inscription : janvier 2011 Messages : 2 930 ![]() |
Bonjour,
Citation:
Citation:
Ceci c'est sans compter l'action par défaut des navigateurs qui fait que le placement du curseur est annulé par la sélection par défaut, ceci n'est bien sûr valable que dans le cas d'une sélection par déplacement au clavier et non par un click dans la zone, qui déclenche, au passage, un événement onfocus. Il existe , sur la toile, un certains nombre de fonction de placement de curseur mais ne tenant pas compte de cet effet de bord, il est vrai que la demande est singulière dans le sens où tu vas à l'inverse du comportement naturel des navigateurs. Je noterai aussi que cette effet ne se produit pas sur des champs de type TEXTAREA. |
||
|
|
10
|
|
|
#6 |
|
Invité régulier
![]() Inscription : janvier 2011 Messages : 16 ![]() |
Hello !
Bon ben j'ai essayé toutes sortes de fonction pour tenter de faire ce que je veux mais rien a faire ! rien ne marche Je ne sais pas si c'est moi qui ai une configuration particulière qui fait que ca marche pas ou si c'est pour tout le monde pareil !!?? y en a t'il parmi vous qui sont arrivé a faire ce que je veux ? Pour info mon navigateur est Chrome et c'est pour une appli intranet donc c'est pas grave si ca marche pas sous un autre navigateur ! mais si il faut que je change de navigateur pour arriver a mes fins, c'est possible aussi ! Merci Vermine et Nosmoking pour vos infos ! une autre petite question pour peut etre comprendre pourquoi ca marche pas : Souvent dans les exemples que je trouve sur la toile pour faire ce que je veux, ils créent un bouton qui va executer la fontion pour mettre le curseur a la fin d'une zone de saisie ! mais je n'en trouve pas qui mettent ca direct dans un onfocus de la saisie en question. Le 'onfocus' de la saisie, se fait elle AVANT l'action par défaut du navigateur ou APRES ? est si c'est AVANT, comment surcharger l'action par defaut du navigateur ? D'avance merci ! |
|
|
00
|
|
|
#7 | |||||
![]() ![]() Inscription : janvier 2011 Messages : 2 930 ![]() |
Citation:
Il existe une solution, que j'ai déjà expérimentée, à savoir l'utilisation de setTimeout. Il suffit sur l'événement onfocus de mettre un setTimeout porteur de la fonction de positionnement. Il y a un effet de bord dans ce cas, si tu accèdes au champ via un click de la mouse la fonction s'exécute quand même, l'astuce est dans ce cas de couper court au setTimeout. Compte tenu de ce que je viens d'écrire, et si l'on veut quand même avoir un comportement, presque, normal lorsque l'on clique, il est préférable d'ajouter une action sur les événements onfocus ET onclick, ce qui je l'admet est difficile à placer dans la balise, et quoiqu'il arrive pas très classe. Dans ton cas je pense qu'il est souhaitable, je me trompe sûrement, de traiter tous tes inputs en fin de chargement de la page soit sur le onload du window. Pour commencer, la fonction de setCursorPosition, une parmi des 10... Code :
Maintenant il suffit de traiter les INPUT concernés sur le onload, par exemple Code :
J'espère avoir répondu le plus clairement possible, je cours prendre une aspirine. |
|||||
|
|
20
|
|
|
#8 |
|
Invité régulier
![]() Inscription : janvier 2011 Messages : 16 ![]() |
YEEEESSSS !! Super ca marche nickel !! Merci NoSmoking !
C'est une solution un peu bidouille mais ca marche ! Si un de ces 4 tu vois une meilleur solution (moins bidouille) je suis preneur Merci encore !! ca faisait un semaine que je galerais avec ce truc ^^ |
|
|
00
|
|
|
#9 | ||||
![]() ![]() Inscription : janvier 2011 Messages : 2 930 ![]() |
Citation:
Je m'explique ...dans l'ordre d'apparition des événements on trouve mouseover, focus etc... il est donc stupide de faire un clearTimeout sur le click, autant bloquer l'action sur le onmousedown, en plus l'effet à l'écran devrait être plus fluide et moins capricieux en cas de click prolongé. Cela donne la fonction sur le onload, légérement changée, suivante Code :
Citation:
|
||||
|
|
00
|
|
|
#10 |
|
Invité régulier
![]() Inscription : janvier 2011 Messages : 16 ![]() |
Oui bon ok c'est pas de la bidouille mais ca aurait été bien un truc du genre :
Code html :
<input type="text" value="bonjour" onfocus="setCursorPosition( -1 )">
Mais ta solution marche alors je me plaint pas et te remercie encore !!Par contre comment je fait si je ne veux sélectionner que les "input" de type text ou int au lieu de tout les "input" dans ta fonction ? car la fonction me fait quelques problemes avec les "button" ( je pense que le setimeout() n'est pas prévu pour les "button") !! |
|
|
00
|
|
|
#11 | |||
![]() ![]() Inscription : janvier 2011 Messages : 2 930 ![]() |
Citation:
Néanmoins tu peux toujours créer une fonction tampon, par exemple setCursorEnd, qui elle se charge du d'appeler setCursorPosition via setTimeout. Citation:
Citation:
|
|||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com