ImageButton et touche entrée

Signaler
Messages postés
3
Date d'inscription
jeudi 6 octobre 2005
Statut
Membre
Dernière intervention
18 mai 2006
-
Messages postés
3
Date d'inscription
jeudi 6 octobre 2005
Statut
Membre
Dernière intervention
18 mai 2006
-
Bonjour,

J'ai un petit soucis sur un projet: j'ai de nombreux formulaires, sur chaque textBox j'ai attaché une fonction javascript qui simule la tabulation en appuyant sur la touche entrée permettant donc de passer au controle suivant ( c'est une exigence du client ).
Cela fonctionnait tres bien avec des controles de type Button en mettant leur propriété UseSubmitBehavior à false.

Le probleme est que le client ( toujours lui ) préfére des ImageButton et que la ca ne fonctionne plus du tout ...
Ca tabule sur les premiers textBox et apres inlassablement ca declenche l'evenement d'un des ImageButton ...

Please Help Me

4 réponses

Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
27
Bonjour,

peut on voir le code que tu as utilisé ?


<HR>
Cyril - MVS - MCP
Messages postés
3
Date d'inscription
jeudi 6 octobre 2005
Statut
Membre
Dernière intervention
18 mai 2006

Yep le voici :

la fonction tabulation dans un fichier .js :


function tabulation(evt, textBox)


{


evt = (evt)? evt :
event



var charCode = (evt.which) ? evt.which : evt.keyCode



if(charCode == 13)


{


document.getElementById(textBox).focus() ;



return
false;


}



else


{



return
true;


}


}

et la fonction qui attache cette derniere aux differents controles dans une classe:

private
static
void attacherJavaScript(
WebControl w,
Page p)


{





string id = getElementByTabIndex(p, w.TabIndex + 1);



if (id !=
"")


{


id =
"ctl00_Activite_" + id;



string appelFonction =
"tabulation(event, '" + id +
"');";


w.Attributes.Add(
"onKeyUp", appelFonction);




}


}

Y'a bien entendu une fonction qui boucle sur tout less controles de la page pour le faire tout seul, précision on est en .NET2.0 avec vs2005
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
27
Bpnsoir,

quand tu cliques sur entrer du premier textbox, ou le focus se met-il ? quel est la fonction getElementByTabIndex ? t'es sur qu'il n'y a aucun problème de ce coté ?

PS : evite d'écrire onKeyUp mais onkeyup (c'est comme ca qu'on doit l'ecrire dixit les standards) ca me fait pensser t'as essayé sur l'evenement onkeydown ?

<hr />Cyril - MVS - MCP
Messages postés
3
Date d'inscription
jeudi 6 octobre 2005
Statut
Membre
Dernière intervention
18 mai 2006

Bonjour,

En fait c'est très aléatoire selon les pages, sur une le focus va bien se mettre sur le textBox d'apres mais inévitablement au bout d'un moment ( ca fonctionne sur les deux trois premiers textbox ) l'evenement d'un des imageButton est declenché.
J'ai essayé avec "onkeydown" mais ca ne marche pas mieux .

La fonction getElementByTabIndex fonctionait tres bien lorsqu'il y'avait des boutons sur les pages , la voici :

private
static
string getElementByTabIndex(
Page p,
int tabIndex)
{

   string retour =
"";   

   foreach (
Control C
in p.Controls)
   {
      
if (C.GetType().ToString() ==
"ASP.masterpage_master")
         {
               
foreach (
Control D
in C.Controls) 
                  {
                        
if (D.GetType().ToString() ==
"System.Web.UI.HtmlControls.HtmlForm")
                           {

                                 foreach (
Control E
in D.Controls)
                                    {

                                          if (E.GetType().ToString() ==
"System.Web.UI.WebControls.ContentPlaceHolder")
                                          {
                                                
foreach (
Control F
in E.Controls)
                                                {
                                                   
if (F
is
WebControl)
                                                   {
                                                      
if (((
WebControl)F).TabIndex == tabIndex)
                                                      {
                                                         retour = F.ID;
                                                         
break;
                                                      }
...}
return retour;
}

C'est un peu lourdingue mais ca fonctionnait, bref ça m'a l'air insoluble comme probleme on va former les secretaires à utiliser la touche tabulation je crois