Déclencher fonction sur la touche entrée

Eléphant du PHP | 447 Messages

11 avr. 2010, 17:26

Hello : )

J'ai un formulaire avec un champ de type text, et je n'ai qu'un boutton (type button) pour appeler une fonction javascript (ajax).

Comment pouvoir déclencher le script lorsque l'utilisateur appuie sur la touche entrée?
<form id="tchatform" name="tchatform" action="" method="post" onsubmit="return false">
	<input type="text" id="post" name="post" />
	<input type="button" id="submit" name="submit" onclick="newpost()" value="SEND" />
	<input type="reset" value="CLEAR" />
</form>
J'ai essayé avec "if (event.keyCode == 13){ newpost(); }", mais ça ne marche pas...


Merci à vous!!
Probably (only a) Human Problem?

devlop78
Invité n'ayant pas de compte PHPfrance

11 avr. 2010, 17:36

<input type="submit" onkeypress=""

Et après tu identifies la touche (ici entrée).

Mais je suis quasi sûr que en XHTML il y a moyen de dire que la touche Entrée est similaire au clic sur le submit. Mais je ne sais pas comment :(

devlop78
Invité n'ayant pas de compte PHPfrance

11 avr. 2010, 17:39

Je cite (http://forum.alsacreations.com/topic-5- ... -text.html)
30 Sep 2005 - 12:00:51
4 Posts Bonjour,

Dans mon intranet, j'ai un truc qui me bloque sans trouver de réponse.

J'ai sur une page un formulaire constitué de plusieurs input type="text",
normalement, le navigateur ne devrait pas faire de submit lorsque l'utilisateur utilise la touche entrée, mais pourtant c'est ce qui se passe (avec FF et IE).

Je me suis dit : c'est le input type="submit", ok je le remplace par un
input type="button" onClick="submit();"
ça le change sur une page, mais pas sur une autre, ou cette partie est rigoureusement identique.

Comment on peut autoriser ou interdire le submit avec la touche entrée ?
Ca serait une réaction par défaut. Si tu veux faire une fonction à la place de ton submit tu peux tout à fait faire quelquechose comme onclick="fonction();return false;" et là le submit lancera la fonction sans envoyer le formulaire.

Cordialement,

ViPHP
ViPHP | 2287 Messages

11 avr. 2010, 17:53

Bonjour,

pour que ton formulaire se comporte comme ça il suffit que ton submit soit un vrai submit et pas un simple bouton.

:arrow: il suffit de changer l'attribut type du input ( button => submit ) et de gérer les conséquences à partir de là...
if(!@work()){ Nespresso(); } else { what(); }
______________________________

Eléphant du PHP | 447 Messages

11 avr. 2010, 18:26

Chuis un peu paumé les gars là...

J'ai mis un type button parce que j'utilise ajax pour traiter le formulaire, si je mets un type submit la page va être envoyé et ça ne sert à rien d'utiliser ajax...

Or il s'agit d'un tchat, d'où l'intérêt d'ajax; j'enregistre les données utilisateur et actualise le tchat sans recharger la page.

D'où ma question: comment envoyer les données du formulaire au script à partir de la touche entrée.
Probably (only a) Human Problem?

ViPHP
ViPHP | 2287 Messages

11 avr. 2010, 18:30

Chuis un peu paumé les gars là...

J'ai mis un type button parce que j'utilise ajax pour traiter le formulaire, si je mets un type submit la page va être envoyé et ça ne sert à rien d'utiliser ajax...
C'est pour ça que je parlais de gérer les conséquences ;)

:arrow: Tu as testé ?
Or il s'agit d'un tchat, d'où l'intérêt d'ajax; j'enregistre les données utilisateur et actualise le tchat sans recharger la page.

D'où ma question: comment envoyer les données du formulaire au script à partir de la touche entrée.
Il s'agit avant toute chose d'un formulaire pour ton browser. Il s'attend à y trouver un submit quelquepart, c'est légitime. Après si tu arrives à éliminer en pratique la soumission... :wink:
if(!@work()){ Nespresso(); } else { what(); }
______________________________

Eléphant du PHP | 447 Messages

11 avr. 2010, 18:41

Ben oui j'ai testé Calim, si je mets un type submit ça recharge la page, tout simplement... Donc je ne vois pas du tout comment avoir un type submit sans recharger la page.

Que me suggères-tu?
Probably (only a) Human Problem?

ViPHP
ViPHP | 2287 Messages

11 avr. 2010, 18:59

<form id="tchatform" name="tchatform" action="" method="post" onsubmit="return false">
En utilisant onsubmit tout simplement comme tu le fais là ! ;)

Si ton onsubmit retourne false, comme dans ton code de départ, le formulaire n'est finalement pas envoyé. Et tu peux bien sûr placer du code de ton choix avant ce return pour gérer l'évènement à ta manière (ajax ou autres).
if(!@work()){ Nespresso(); } else { what(); }
______________________________

Eléphant du PHP | 447 Messages

11 avr. 2010, 19:10

Je suis grave, je l'avais sous les yeux... ça m'énerve d'être aussi long à la détente des fois.

Une fois de plus: merci Caliiiiiiiiim! :D
Probably (only a) Human Problem?