IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

tabIndex géré dynamiquement


Sujet :

JavaScript

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    442
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 442
    Points : 475
    Points
    475
    Par défaut tabIndex géré dynamiquement
    Bonjour.

    Pour une application de back-office, j'ai besoin d'avoir une maitrise totale des tabIndex de la page. Ce n'est pas très compliqué en soi. Mon problème vient d'un controle spécial qui fait apparaitre ou disparaitre 2 champs au milieu de ma page. Donc lorsqu'ils disparaissent, je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    document.getElementById("champ16").tabIndex = "-1";
    document.getElementById("champ17").tabIndex = "-1";
    Ce qui fait que le focus saute du champ 15 au champ 18 (quand ou fait TAB).

    Et lorsqu'ils réapparaissent:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    document.getElementById("champ16").tabIndex = "16";
    document.getElementById("champ17").tabIndex = "17";
    Et le focus se comporte bizarrement: en appuyant sur TAB à répétition, voilà l'enchainement:
    champ1>champ2>champ3>champ4>champ5>champ6>
    champ7>champ8>champ16>champ9>champ10>champ11>
    champ12>champ13>champ14>champ15>champ17>champ18

    Le champ 16 se place entre les 8 et 9 au lieu des 15 et 17 !
    Et pourtant j'ai fais des alertes javascript pour vérifier son tabIndex et il est correct...

    Bref, il y a une déchirure dans l'espace-temps de ma page web
    (Je suis sous IE 5.5)

    Est-ce que ça dit quelque chose à quelqu'un ?

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    essaye avec du numérique plutot que du string ?


  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    442
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 442
    Points : 475
    Points
    475
    Par défaut
    Bonne idée, j'y avais pas pensé ! Mais j'ai fait la modification et le comportement est identique malheureusement...

  4. #4
    Expert éminent

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Points : 7 641
    Points
    7 641
    Par défaut
    Citation Envoyé par Jung
    Bonne idée, j'y avais pas pensé ! Mais j'ai fait la modification et le comportement est identique malheureusement...
    Tu peux nous concocter un petit code HTML minimal qui fasse apparaitre ton problème?
    Parceque franchement, je ne vois pas... Ca vient peut-être d'une interaction avec une autre de tes fonctions. Ou alors, un bug du navigateur.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    442
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 442
    Points : 475
    Points
    475
    Par défaut
    Citation Envoyé par denisC
    Tu peux nous concocter un petit code HTML minimal qui fasse apparaitre ton problème?
    C'est pas gagné (j'ai 500 lignes de JSP et 1000 lignes de javascript un peu touffu avec de l'ajax et des webservices partout) mais je vais essayer d'isoler le problème dans un petit fichier en début d'après midi.

    Citation Envoyé par denisC
    Parceque franchement, je ne vois pas... Ca vient peut-être d'une interaction avec une autre de tes fonctions. Ou alors, un bug du navigateur.
    Je penche pour le bug parce que j'ai tout vérifer à fond un millier de fois.

  6. #6
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    as tu essayé le coup de redefinir le type du submit dynamiquement..; des fois IE n'aime pas trop qu'on lui bouscule son form ...
    un coup de pied dans le bouton submit remets parfois les choses en place ...

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    442
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 442
    Points : 475
    Points
    475
    Par défaut
    Bon j'ai avancé... le focus passe par du 8 au 16 puis au 9 parce le 16 n'a pas de tabIndex et ils sont dans cet ordre dans le code html. Alors, pourquoi le 16 n'a pas de tabIndex ? c'est logiquement impossible vu qu'au chargement son tabIndex vaut 16 puis -1 (quand je fais la modif) puis 16 à nouveau. Donc, le "raffraichissement" du tabIndex ne fonctionne pas très bien voire pas du tout... Il faut que je trouve un moyen de forcer ce raffraichissement du champ. (ça ne fonctionne pas en faisant un "display:none;" et en le réaffichant)

    [Edit] Je vais voir du coté du form global et de son submit, ça me parait une bonne idée [/Edit]

  8. #8
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    youhou .... rafraichir le tabIndex peut peut être fait au moyen de la réactualisation du bouton submit ...

  9. #9
    Expert éminent

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Points : 7 641
    Points
    7 641
    Par défaut
    Citation Envoyé par Jung
    Bon j'ai avancé... le focus passe par du 8 au 16 puis au 9 parce le 16 n'a pas de tabIndex et ils sont dans cet ordre dans le code html. Alors, pourquoi le 16 n'a pas de tabIndex ? c'est logiquement impossible vu qu'au chargement son tabIndex vaut 16 puis -1 (quand je fais la modif) puis 16 à nouveau. Donc, le "raffraichissement" du tabIndex ne fonctionne pas très bien voire pas du tout... Il faut que je trouve un moyen de forcer ce raffraichissement du champ. (ça ne fonctionne pas en faisant un "display:none;" et en le réaffichant)
    Mais pourquoi ça marche pour le 17, dans ce cas????

    Sinon, je crains que la seule façon de rafraichir efficacement un champ dans IE soit de le détruire puis de le recréer à la sauce IE avec un:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    document.createElement("<input type=... name=... tabIndex=... />");

  10. #10
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    j'ai purtant pas mis ma cape d'invisibilité aujourd'hui ...

  11. #11
    Expert éminent

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Points : 7 641
    Points
    7 641
    Par défaut
    Citation Envoyé par SpaceFrog
    j'ai purtant pas mis ma cape d'invisibilité aujourd'hui ...
    Euh, comment tu rafraichis un bouton submit???? Avec un grand verre d'eau?

  12. #12
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.forms[0].monboutonsubmit.type="submit"
    comme dit plus haut redéfinir dynamiquement le type du bouton submit ...

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    442
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 442
    Points : 475
    Points
    475
    Par défaut
    Citation Envoyé par denisC
    Mais pourquoi ça marche pour le 17, dans ce cas ????
    Ça marche pour le 17 parce c'est l'ordre dans lequel les champs se suivent dans le code source.

    Donc en gros:
    - Affecter un tabIndex -1 en javascript, ça fonctionne
    - Affecter un tabIndex >0 en javascript, ça fonctionne pas:
    - javascript détecte bien le nouveau tabIndex
    - IE n'en tient pas compte lorsqu'on fait TAB


    SF > Désolé de ne pas avoir répondu plus tôt à ta suggestion mais je n'ai pas de bouton submit (la soumission du formulaire se fait en javascript par le framework propriétaire que j'utilise)

  14. #14
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    ben mets un bouton submit hidden?

Discussions similaires

  1. [VB6] Changer le TabIndex Dynamiquement
    Par Invité dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 13/09/2007, 10h21
  2. comment creer un alias dynamique avec BDE et ODBC
    Par david33 dans le forum C++Builder
    Réponses: 2
    Dernier message: 12/07/2002, 11h50
  3. Création dynamique de TImages
    Par Dric dans le forum C++Builder
    Réponses: 10
    Dernier message: 08/07/2002, 12h36
  4. Réponses: 4
    Dernier message: 13/05/2002, 16h43
  5. repertoire temp dynamique
    Par killpilot dans le forum C
    Réponses: 2
    Dernier message: 26/04/2002, 16h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo