bonjour,
comment envoyer un formulaire ou ya juste un input text, l'envoi de se fera avec le button entrer.
Version imprimable
bonjour,
comment envoyer un formulaire ou ya juste un input text, l'envoi de se fera avec le button entrer.
Code:<h:commandButton value="enter"/>
Moi j'utilise ceci :
Mais ça doit marcher avec <h:commandButton/> je pense.Code:
1
2<a4j:commandButton type="submit" .../>
Maintenant, si tu ne veux pas mettre de bouton du tout, tu peux passer par les attributs onkeyXXX et faire un test sur le type de touche (si je ne m'abuse, c'est event.keyCode == 13) et faire un this.form.submit();
Une idée :
Tu ajoutes un <a4j:support> à ton inputText en faisant quelque chose du genre :
En gros :Code:
1
2
3
4 <h:inputText ...> <a4j:support event="onkeyup" onsubmit="if (event.keyCode != 13) { return false}" action="#{myBean.doSomething}"/> </h:inputText>
L'a4j:support va ajouter un listener sur ton inputText. A chaque appui sur une touche du clavier, si ce n'est pas la touche Enter (keyCode != 13), alors on ne fait rien (grâce au return false). Si c'est la touche enter (keyCode == 13), alors le JS exécuté par onsubmit ne retourne rien, et la requête Ajax est envoyée au serveur. La méthode myBean.doSomething est alors exécutée.
non au fait je suis allé un peu trop vite..
ça marche bien.mais le probleme est que le reRender ne fonctionne pas..il recalcule pas les composants à rafraichir ..
On peut voir un peu ton code ?
Eventuellement, ajoute un <a4j:log popup="false"/> (attention, c'est très verbeux) dans ta page, histoire de voir s'il n'a pas un pb lors de la recherche des composants à rafraichir...
voilà le code
quand je fais l'action sur l'evenement onblur ça marche bien ..Code:
1
2
3
4
5
6 <h:inputText value="#{beanr.search}" id="text"> <a4j:support event="onkeyup" onsubmit="if (event.keyCode != 13) { return false}" reRender="table,size" action="#{bean.onSearch}" /> </h:inputText>
Et le <a4j:log/> n'indique rien d'étrange ? Pas d'erreur ou warning ?
et ça fonctionne sous FireFox..mais toujours pas sur IE7..
essaye d'ajouter
immediate="true"
dans ton <a4j:support ... />
Non..au fait j'utilise l'evenement onblur et l'utilisateur se sert de la touche tabulation..ça fonctionne mieux moins intuitif que la touche Enter..
Bonjour.
Tout d'abord une remarque:
Au lieu de faire :
Code:
1
2
3
4
5
6 <h:inputText value="#{beanr.search}" id="text"> <a4j:support event="onkeyup" onsubmit="if (event.keyCode != 13) { return false}" reRender="table,size" action="#{bean.onSearch}" /> </h:inputText>
il suffit de faire :
ça faut exactement la même chose, mais c'est plus simple, hein ? ;)Code:
1
2
3
4
5 <h:inputText value="#{beanr.search}" id="text"> <a4j:support event="onchange" reRender="table,size" action="#{bean.onSearch}" /> </h:inputText>
Ensuite, une piste possible serait de mettre le dataTable (ou tout autre élément à redessiner) dans un:
Code:
1
2
3
4
5
6 <a4j:outputPanel ajaxRendered="true"> : : : </a4j:outputPanel>
Bonne chance.
j'avais dejà tester ce code mais ça ne fonctionne pas!!
j'ai l'impression que le probleme vient de l'interpreation du navigateur de l'eveneter onkeyup.
sur FF ça marche mieux..
Quand tu dis ce code, tu parles de l'évènement onchange ? Parceque chez moi, ça marche aussi bien que dans Firefox que dans IE (et pas n'importe lequel, le 6 s'il vout plaît :aie:)
Je viens de tester sur IE 7, et ça marche: Pas aussi impec que sur Firefox (seulement après appui sur Entrée), mais parfois suite à un keyup, d'autres fois après appui sur Entrée.
Mais ça marche.
:koi: