Bonjour
je travaille sur un client (techno Primeface) sur lequel je dois ajouter une navigation utilisant les flèches clavier.
Jusque là, j'utilisais un petit script qui fonctionnait bien. Et là, le soucis: le déplacement ne fonctionne pas sur certains écrans, dans des cas bien spécifiques:
- Quand on affiche des colonnes supplémentaires à un tableau (mais la navigation redevient fonctionnel après un F5)
- Quand on bascule d'un panel à un autre
J'imagine que cela vient du fait que l'appel javascript n'arrive pas à gérer les dernières modifications de la page, cependant je ne trouve pas de solution à mon problème (d'autant que je n'ai pas d'expérience en Js ).
Le code JS que j'utilise:
Un exemple (rapide) de code qui pose problème
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 <script> $(document).ready(function(){ $('input').keyup(function(e){ if(e.which==39) $(this).closest('td').next().find('input').focus(); else if(e.which==37) $(this).closest('td').prev().find('input').focus(); else if(e.which==40) $(this).closest('tr').next().find('td:eq('+$(this).closest('td').index()+')').find('input').focus(); else if(e.which==38) $(this).closest('tr').prev().find('td:eq('+$(this).closest('td').index()+')').find('input').focus(); }); }); </script>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 <p:panel id="premierPanel"closable="true" toggleable="true" toggleSpeed="0" closeSpeed="0" style="overflow:auto;overflow:visible;"> <TableauLambdaFonctionnant> </p:panel> <p:panel id="secondPanel" closable="true" toggleable="true" toggleSpeed="0" closeSpeed="0" visible="false" style="overflow:visible;"> <MemeTableauLambdaNeFonctionnantPas> </panel>Techno: Javascript, Primeface 2.0
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 <Bouton Id="AjoutDeDonneesSupDansLeTableau"> <p:dataTable value="#{MesValeurs}" autoUpdate="true" rowIndexVar="rowIndex" > <p:columns columnIndexVar="index" var="columnNames" value="#{MesColonnes}" width="40" > <f:facet name="header"> <h:outputText value="#{columnNames}" /> </f:facet> <h:outputText value="#{row[index]}" rendered="#{(getRendered(index,rowIndex) and row[index] != '-1')}" /> <h:outputText value="" rendered="#{row[index] == '-1'}" /> <p:inputText value="#{row[index]}" rendered="#{(!getRendered(index,rowIndex))}"immediate="true"/> </p:columns> </p:dataTable>
Je suis assez dubitatif sur comment résoudre ce soucis, si une ame charitable pouvait me pointer du doigt ou je fais de la merde, ou une solution fonctionnel, ça serait génial!
Partager