Bonjour/Bonsoir,
Je souhaite créer un champ d'aide à la saisie (quand on tape une lettre, une liste de choix s'affiche et l'utilisateur peut y naviguer avec la souris ou le clavier au choix).
Cette liste (ul et li) de résultats est placée dans une div, positionnée sous le champ texte en question.
La recherche de résultats est lancée lorsque l'utilisateur relâche une touche (onkeyup).
Sous Firefox et IE, pas de problème pour l'affichage et la recherche des résultats, tout est ok.
De même pour la navigation au clavier (flèches haut/bas, touche entrée, et surlignage de l'élément "courant"), cela fonctionne aussi bien sur Firefox que sur IE.
Par contre la navigation à la souris pose problème sous IE (6 et 7, pas pu tester sous IE 8), rien ne se passe (au survol, les couleurs de fond de l'élément courant et de l'élément précédent sont censées changer).
Et la fonction associée :
highlightedIndex est une variable globale qui correspond à l'index de l'élément courant (initialisé à -1).
elem correspond au tableau contenant les possibilités retournées (les LI).
Dans le code ci dessus j'ai remplacé les crochets par des parenthèses (elem(i)) pour éviter la balise italique.
Parfois (quand je m'acharne sur la div avec la souris), IE me retourne une erreur : elem.length is null or not an object.
Je ne vois pas trop d'où peut bien provenir le problème en fait, si vous avez une idée, voire une solution, je prends !
Merci
Modifié par SynRJ (08 Jun 2009 - 09:20)
Je souhaite créer un champ d'aide à la saisie (quand on tape une lettre, une liste de choix s'affiche et l'utilisateur peut y naviguer avec la souris ou le clavier au choix).
Cette liste (ul et li) de résultats est placée dans une div, positionnée sous le champ texte en question.
La recherche de résultats est lancée lorsque l'utilisateur relâche une touche (onkeyup).
Sous Firefox et IE, pas de problème pour l'affichage et la recherche des résultats, tout est ok.
De même pour la navigation au clavier (flèches haut/bas, touche entrée, et surlignage de l'élément "courant"), cela fonctionne aussi bien sur Firefox que sur IE.
Par contre la navigation à la souris pose problème sous IE (6 et 7, pas pu tester sous IE 8), rien ne se passe (au survol, les couleurs de fond de l'élément courant et de l'élément précédent sont censées changer).
<div id="divAutoCompleteDelivery" class="divAutoComplete" onmouseover='javascript:highlightLI(event);'></div>
Et la fonction associée :
function highlightLI(evnt)
{
var evt;
if (!evnt)
evt = window.event;
else
evt = evnt;
if (highlightedIndex > -1)
elem[highlightedIndex].style.background = "#FFF"
var target = evt.explicitOriginalTarget||document.activeElement;
if (target.parentNode == "[object HTMLLIElement]")
target.parentNode.style.background = "#CCC";
for (i = 0; i < elem.length; i++)
{
if (elem(i).innerHTML == target.parentNode.innerHTML)
highlightedIndex = i;
}
}
highlightedIndex est une variable globale qui correspond à l'index de l'élément courant (initialisé à -1).
elem correspond au tableau contenant les possibilités retournées (les LI).
Dans le code ci dessus j'ai remplacé les crochets par des parenthèses (elem(i)) pour éviter la balise italique.
Parfois (quand je m'acharne sur la div avec la souris), IE me retourne une erreur : elem.length is null or not an object.
Je ne vois pas trop d'où peut bien provenir le problème en fait, si vous avez une idée, voire une solution, je prends !
Merci

Modifié par SynRJ (08 Jun 2009 - 09:20)