|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||
|
Membre habitué
![]() Inscription : avril 2009 Messages : 228 ![]() |
Bonjour,
Alors voici mon problème je travaille sur une application en jsf 1.1 et sur une page je dispose notamment d'une selectOneMenu (une liste déroulante quoi) qui fait un submit de la page sur chaque événement onChange. Mais malheureusement cette liste est située en bas de page et lors du submit je me retrouve automatiquement en haut de page ce qui est plutôt pas très ergonomique... Je me suis donc tourné vers le javascript en utilisant un champ caché prenant la valeur de l'ancre ou je veut aller (car évidement j'ai plusieurs listes dans cette page qui chacunes vont à un endroit différent de la page) et une fonction sur l'événement onLoad de la page qui doit me positionner sur l'ancre voulue. Sachant que ces listes sont placées dans une dataTable elles même dans une subview qui est dans un form... enfin bref tout cela est bien enterré au fin fond de la page ^^ La liste : Code :
Code :
Code :
Voila donc si quelqu'un à une idée d'ou viennent mes problèmes et surtout de comment les résoudre il gagnera ma reconnaissance (non pas de bière ^^). Merci a tous d'avance!! |
||||||
|
|
00
|
|
|
#2 |
![]() ![]() Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur Inscription : mars 2002 Messages : 30 040 ![]() |
.hash modifie juste le hash
si tu veux qu'il soit effectif ...
__________________
Ma page Developpez Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts) Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir... Votre post est résolu ? Alors n'oubliez pas le Tag ![]() ![]() réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr |
|
|
00
|
|
|
#3 |
|
Membre habitué
![]() Inscription : avril 2009 Messages : 228 ![]() |
Bonjour et merci de la rapidité de la réponse ;-)
Effectivement je n'avais pas connaissance de window.location.href... Mais malheureusement pas de changement je me retrouve toujours en haut de page... Est-ce mon input qui est mal nommé? Ou le href n'est pas positionné sur le bon événement? Que de questions ^^ en tout cas merci de la réponse |
|
|
00
|
|
|
#4 |
![]() ![]() Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur Inscription : mars 2002 Messages : 30 040 ![]() |
mets lui un id ...
__________________
Ma page Developpez Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts) Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir... Votre post est résolu ? Alors n'oubliez pas le Tag ![]() ![]() réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr |
|
|
00
|
|
|
#5 | |
![]() ![]() ![]() Didier MouronvalDéveloppeur Web Inscription : juin 2008 Messages : 13 807 ![]() |
Citation:
![]() Tu es bien sûr que tu as un élément dans la page dont l'id est "partenaireEditForm:frmEditGlobal:partenaireEditSpecifiqueForm:blocSpecifiqueCommuneMutuelle:choixAncre" ? A en croire ton code (mais bien entendu, le code HTML généré serait plus utile) Code :
<h:inputHidden id="choixAncre" value="mutuelleSpecifique"/>
__________________
Pas de question technique par MP ! Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi ! Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi ! Mes formations video2brain : La formation complète sur JavaScript • JavaScript et le DOM par la pratique • PHP 5 et MySQL : les fondamentaux Mon livre sur jQuery
|
|
|
00
|
|
|
#6 |
|
Membre habitué
![]() Inscription : avril 2009 Messages : 228 ![]() |
Bonjour,
Alors pour répondre à bovino oui l'id de mon élément est bien partenaireEditForm:frmEditGlobal:partenaireEditSpecifiqueForm:blocSpecifiqueCommuneMutuelle:choixAncre, car jsf concatène les id's des éléments imbriqués, c'est bien l'id indiqué dans le html généré... Le problème ne viens pas d'ici car j'arrive sans problèmes a avoir la valeur de choixAncre, le problème est plutôt que choixAncre se réinitialise lors du rechargement de la page même lorsque je le binde sur une valeur de mon backBean jsf... Et d'ailleurs en regardant dans ce code html généré je m'aperçois que l'inputHidden mutuelleSpecifique (sur laquelle est positionnée mon ancre) n'est pas présente... En fait après longues et fastidieuses recherche j'ai juste oublié les deux points entre h et inputHidden... Bon par contre ça ne marche toujours pas... Mais j'essaye de remplacer le href par l'id réel de mon input hidden et je vous dit ce que ça donne...Merci de vous intéresser à mes problèmes en tout cas!! |
|
|
00
|
|
|
#7 | ||||
|
Membre habitué
![]() Inscription : avril 2009 Messages : 228 ![]() |
Bon et bien en remplaçant
Code :
Code :
|
||||
|
|
00
|
|
|
#8 |
![]() ![]() Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur Inscription : mars 2002 Messages : 30 040 ![]() |
on peut voir le html généré ?
(afficher source, copier coller )
__________________
Ma page Developpez Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts) Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir... Votre post est résolu ? Alors n'oubliez pas le Tag ![]() ![]() réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr |
|
|
00
|
|
|
#9 |
|
Membre habitué
![]() Inscription : avril 2009 Messages : 228 ![]() |
Alors voici le html généré des inputHidden (je ne met pas la page entière car elle est plutot... conséquente...) :
Code :
<input type="hidden" id="partenaireEditForm:frmEditGlobal:partenaireEditSpecifiqueForm:blocSpecifiqueCommuneMutuelle:mutuelleSpecifique" name="partenaireEditForm:frmEditGlobal:partenaireEditSpecifiqueForm:blocSpecifiqueCommuneMutuelle:mutuelleSpecifique" value="pouet" /><input type="hidden" id="partenaireEditForm:frmEditGlobal:partenaireEditSpecifiqueForm:blocSpecifiqueCommuneMutuelle:choixAncre" name="partenaireEditForm:frmEditGlobal:partenaireEditSpecifiqueForm:blocSpecifiqueCommuneMutuelle:choixAncre" value="mutuelleSpecifique" /> |
|
|
00
|
|
|
#10 |
![]() ![]() Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur Inscription : mars 2002 Messages : 30 040 ![]() |
et avec un id plus .....
court ?
__________________
Ma page Developpez Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts) Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir... Votre post est résolu ? Alors n'oubliez pas le Tag ![]() ![]() réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr |
|
|
00
|
|
|
#11 |
![]() ![]() ![]() Didier MouronvalDéveloppeur Web Inscription : juin 2008 Messages : 13 807 ![]() |
Euh... une ancre pointant sur un input hidden (ou sur tout élément non affiché de la page), c'est sûr que ça ne risque pas de fonctionner
__________________
Pas de question technique par MP ! Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi ! Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi ! Mes formations video2brain : La formation complète sur JavaScript • JavaScript et le DOM par la pratique • PHP 5 et MySQL : les fondamentaux Mon livre sur jQuery
|
|
00
|
|
|
#12 |
|
Membre chevronné
![]() ![]() Inscription : juillet 2006 Messages : 1 194 ![]() |
Au/après chargement, vous faites un appel à atteindreAncre() au moins ?
|
|
|
00
|
|
|
#13 |
|
Membre habitué
![]() Inscription : avril 2009 Messages : 228 ![]() |
Arf malheureusement je ne peut pas avoir d'id plus court car l'id présent dans le html généré est construit par concaténation des id des différents éléments imbriqués et c'est fait automatiquement par jsf (par exemple l'inputText iT présent dans la dataTable dT présente dans la subView sV présente dans le form form aura comme id form:sV:dT:iT_x x étant la ligne de la dataTable...) et je n'ai absolument pas la main dessus...
Par contre merci à Bovino, en effet j'ai remplacé le inputHidden par un outputText et ça marche niquel ;-) Merci beaucoup çà me retire une épine du pied Bon par contre pour vraiment me permettre de bien dormir ce soir sans m'arracher les cheveux dans mon sommeil sur ce problème, avez vous une idée pour le deuxième problème? Je le rappel : j'utilise l'inputHidden pour "sauvegarder" l'endroit ou je veut que la page me positionne au rechargement (en gros j'ai deux listes déroulantes qui font un submit de la page et je veut que lors de chaque submit je revienne bien à la liste correspondante). donc pour ce faire j'appelle une fonction qui renseigne choixAncre avec la valeur qui va bien puis je fait le test dans atteindreAncre() pour atteindre l'ancre adéquate suivant la valeur de choixAncre. Seulement lors du submit choixAncre est réinitialisé et donc je ne sais pas vers quelle ancre aller... En tout cas merci de vos réponse et de la rapidité et la perspicacité de celles-ci |
|
|
00
|
|
|
#14 | ||
![]() ![]() Inscription : janvier 2011 Messages : 2 944 ![]() |
Bonsoir,
une méthode un peu moins standard est de sauvegarder dans le name de la window la position du scroll et de faire scroller la page sur le recharchement après lecture de la valeur un petit exemple Code html :
|
||
|
|
00
|
|
|
#15 |
|
Membre habitué
![]() Inscription : avril 2009 Messages : 228 ![]() |
Bonjour bonjour!!
Merci pour ta réponse noSmoking, par contre je suis un peu (beaucoup) débutant en javaScript donc la je comprend pas tout ^^ Si j'ai bien compris la fonction getScrollPage va retourner la position du scroll que j'enregistrerais dans le nom de la variable window c'est ça? Par contre je ne vois pas trop comment fonctionne les deux var posX et posY... pourquoi faire dE && dE.scrollLeft ou dB... c'est document.documentElement n'est pas forcément renseigné? Et aussi pourquoi récupérer le scrollLeft et le scrollTop? A priori je n'aurais besoin que du scrollTop non? Pour le onLoad aussi je ne comprend pas comment pos est alimenté... que fait cette ligne : Code :
var pos = window.name.split('=')[1] || 0; Pour le onUnLoad je pense avoir saisi le fonctionnement ![]() Et oui je suis un débutant complet en javaScript je travaille habituellement plutôt en java (js c'est moche et ça tu des bébé chats :troll: )En tout cas merci de votre aide, je me coucherais certainement moins bête ce soir ^^ |
|
|
00
|
|
|
#16 | |||||
![]() ![]() Inscription : janvier 2011 Messages : 2 944 ![]() |
Citation:
Citation:
Code :
var posY = document.documentElement.scrollTop; Citation:
- au rechargement on renseigne avec window.name = "scrollY=" +pos.y;, sous la forme clé = valeur. - au deuxiéme passage la lecture de window.name nous donne donc "scrollY=100", par exemple, il nous faut alors récupérer simplement la valeur. Pour ce faire on utilise la méthode split de l'objet String qui renvoie sous forme d'Array le résultat après découpage de la chaine selon le caractère passé en paramètre, ici =. Il suffit de récupérer le contenu du tableau qui se trouve en position 2, soit l'index 1, le premier index des tableau étant 0. exemple : Code :
|
|||||
|
|
00
|
|
|
#17 |
|
Membre habitué
![]() Inscription : avril 2009 Messages : 228 ![]() |
Merci pour ces clarifications ;-)
Donc j'ai appliqué ce code, pas de problèmes cela fonctionne le scroll est bien conservé lors du rechargement de la page. Par contre la valeur de mon selectOneMenu n'est elle pas modifiée (alors que j'ai bien fait un submit du formulaire)... c'est un problème qu'il me semble avoir déjà rencontré mais impossible de me souvenir de comment je l'ai résolue... Je cherche de mon côté dans ma mémoire de poisson rouge mais si jamais quelqu'un à déjà eu ce problème. En tout cas merci, j'ai bien avancé grâce à vous, en plus en apprenant des choses!! |
|
|
00
|
|
|
#18 |
|
Membre habitué
![]() Inscription : avril 2009 Messages : 228 ![]() |
Me revoilà!!
Bon et bien le problème est résolu, désolé noSmoking mais je n'ai pas utilisé ta méthode (et rien a voir avec le fait que je soit un fumeur ) bien qu'elle me plaisait mais le problème ci dessus a fait que...Donc je suis reparti sur ma méthode précédente mais au lieu de passer par du javaScript pour changer la valeur de choix ancre, j'ai utilisé la propriété valueChangeListener du selectOneMenu qui permet d'appeler une méthode du backBean lors d'un changement sur le selectOneMenu. Et une autre petite modification, l’utilisation de document.getElementById(monId).InnerHTML au lieu de document.getElementById(monId).value qui me retournait undefined pour une raison que j'ignore... Peut être le fait que le outputText était lié à une valeur du backBean... En tout cas tout marche a merveille!!! Je vous remercie tous de votre aide collègues développeurs, et a bientôt pour d'autres problèmes!!! (Qui sait c'est peut être moi qui vous aiderait )
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com