JSF invoquer la sauvegarde de méthode d'haricot et reRender composants sur la touche ENTRÉE
J'ai une table avec les champs de recherche. Je veux une méthode sur la sauvegarde de la fève à être invoquée lorsque la touche ENTRÉE est pressée, ainsi que le DataTable à être re-rendus.
Mon approche jusqu'à présent ne fonctionne que sous IE 6 et 7, pas dans FF. C'est le inputText:
<h:inputText
value="#{applicantProductListBean.applicantNameFilterValue}"
id="applicantNameFilterValue" onkeypress="submitByEnter(event)">
</h:inputText>
et c'est la méthode Javascript je suis en invoquant:
function submitByEnter(e){
if(e.keyCode==13){
//alert("Enter was pressed");
e.returnValue=false;
e.cancel=true;
document.getElementById("applicantProductListForm:refreshButton").click();
}
}
Comme vous pouvez le voir, la méthode Javascript clique sur le bouton d'actualisation, qui existe sur la page:
<a4j:commandButton value="Refresh" id="refreshButton"
action="#{applicantProductListBean.refreshData}"
image="/images/icons/refresh48x48.gif"
reRender="table, scroller">
</a4j:commandButton>
La refreshData méthode ne retourne rien. Comme dit précédemment, cela ne fonctionne que sous IE 6 et IE 7.
Personne ne sait pourquoi il ne fonctionne pas dans FF?
Une alternative j'envisage de a été Raccourci, ce qui peut en effet attraper le cas de l'ENTRÉE, mais il ne peut invoquer le Javascript, donc il n'est pas approprié.
Est la bonne façon de le faire via RichFaces ou de la plaine JSF?
Cheers!
Mise à JOUR:
Légèrement modifié la réponse par BalusC, le script qui fonctionne est:
if (event.preventDefault) {
//Firefox
event.preventDefault();
} else {
//IE
event.returnValue = false;
}
OriginalL'auteur Markos Fragkakis | 2010-02-23
Vous devez vous connecter pour publier un commentaire.
Essayez de remplacer la JS bloc par:
ou mieux,
et l'entrée
onkeypress
parSi cela ne fonctionne pas, exécutez la JS débogueur de Firebug pour voir si le code JS se comporte comme prévu.
Vous êtes les bienvenus. Il ne sera cependant pas travailler sur du (très) vieux navigateurs. Le tester dans tous les navigateurs que vous êtes censé soutenir.
J'ai fait une mise à jour (j'ai vérifier si preventDefault existe et soit appeler ou returnValue à false). Je l'ai testé dans IE6, IE7, FF.
OriginalL'auteur BalusC
Suivant a fonctionné pour moi:
Cela fonctionne, mais pour trouver l'ID de mon bouton de recherche, j'ai eu à rechercher dans le code source de ma page que le searchButton id lui-même ne pouvait pas être trouvé!
Je pourrais l'ai fait sur le customComponent mais je vais avoir le contrôle sur le code source de ce composant et le onkeypress méthode n'est pas implémentée.
OriginalL'auteur Dirk Vranckaert