ImageButton et touche entrée

Rasta_far_eyes Messages postés 3 Date d'inscription jeudi 6 octobre 2005 Statut Membre Dernière intervention 18 mai 2006 - 15 mai 2006 à 16:33
Rasta_far_eyes Messages postés 3 Date d'inscription jeudi 6 octobre 2005 Statut Membre Dernière intervention 18 mai 2006 - 18 mai 2006 à 10:29
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

jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
15 mai 2006 à 17:59
Bonjour,

peut on voir le code que tu as utilisé ?


<HR>
Cyril - MVS - MCP
0
Rasta_far_eyes Messages postés 3 Date d'inscription jeudi 6 octobre 2005 Statut Membre Dernière intervention 18 mai 2006
16 mai 2006 à 13:38
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
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
17 mai 2006 à 01:41
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
0
Rasta_far_eyes Messages postés 3 Date d'inscription jeudi 6 octobre 2005 Statut Membre Dernière intervention 18 mai 2006
18 mai 2006 à 10:29
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
0
Rejoignez-nous