Bonjour à tous,
J'ai implémenté le système de complétion layout suggest et ça fonctionne parfaitement sauf sur IE6 où le div contenant la liste de propositions se met derrière les select que j'ai sur les lignes suivantes !
C'est un bug connu qu'on peut corriger avec des iframes mais je n'ai pas la main sur le div généré par layout:suggest pour y insérer un iframe.
Savez-vous comment remédier à ce problème layout:suggest + IE6?
Exemple: struts layout génère entre autre le div suivant:
Pour corriger le problème des select avec IE il faut insérer un iframe derrière le div mais comment faire avec struts-layout?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 <div id="idEntiteSuggestionList" class="suggestionList"></div> <input type="hidden" id="idEntiteSuggestionList_selectedFieldText" value="0"> <input type="hidden" id="idEntiteSuggestionList_selectedSuggestionIndex" value="-1"> <input type="hidden" id="idEntiteSuggestionList_typedWord" value="">
Je précise que j'utilise struts-layout 1.2 avec le jar de compatibilité pour struts 1.1.
Après des heures de recherche, j'ai trouvé ça mais ça ne fonctionne pas:
http://javascript.developpez.com/faq...put.div.select
Voici mon code:
Avec la fonction putFrame suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 <td> <layout:suggest styleId="idEntite" layout="false" suggestCount="10" minWordLength="3" tooltip="tooltip.codeOuLibelle" property="codeEntite" onfocus="javascript: if (isExplorer6 ) putFrame('idEntiteSuggestionList','idEntieFrame');" suggestAction="/private/getEntiteSuggestions"/> </td> <!-- les html:select que je veux couvrir sont dans d'autres tr -->
Avez-vous une idée? Merci d'avance!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 function putFrame( theDiv, frameId ){ alert('putFrame'); var f = document.getElementById(frameId); if (f) { f.parentNode.removeChild(f); } f = document.createElement("iframe"); f.id = frameId; var d = document.getElementById(theDiv); if (!d) alert('d est null'); with(f.style) { position = "absolute"; width = "100px"; height = "100px"; top = d.offsetTop+"px"; left = d.offsetLeft+"px"; zIndex = "-1"; border = "1"; } d.appendChild(f); }
Partager