Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

comment empêcher la touche entrée d'envoyer un formulaire ?

11 réponses
Avatar
PERSONAL COMPUTERS \(J.C.SAMUEL\)
Bonjour à tous,

Je cherche à empêcher le fait qu'un bouton 'submit' soit sélectionné par
défaut dans un formulaire et donc d'imoser le clic pour l'envoi du
formulaire.
Comment faire cela ?

Si ce n'est pas possible, comment récupérer le Js le nom du 'submit'
employé, s'il y en a plusieurs, de nom différents ?

Merci de votre aide.

Jc Samuel

10 réponses

1 2
Avatar
Raziel Reaver
Essai de capturer l'evenement onKeydown peut etre, et redirige la touche
entrer.

Voila le début du code pour caputrer l'evenement onkeydown. Il faut voir si
l'interception et la redirection annule bien l'effet entrer sur un
formulaire.

<script language="Javascript" type="text/javascript">
var Key;
if(navigator.appName.substring(0,3) == "Net")
{
document.captureEvents(Event.KEYDOWN);
};
document.onkeydown = GetKey;

function GetKey(e)
{
if (Nav=="Net")
Key = e.which;
else
Key = window.event.keyCode;
// il faut rechercher CopdeToucheEnter, je me rappelle plus lequel c'est.
Par exempleje sais que shift c 16 et ctrl c 17 mais entrer je sais plus.
if (Key==CodeToucheEnter) faire quelque chose d'autre;
}

A voir?

Peut etre une piste

</script>

"PERSONAL COMPUTERS (J.C.SAMUEL)" a écrit
dans le message de news:41233ce5$0$318$
Bonjour à tous,

Je cherche à empêcher le fait qu'un bouton 'submit' soit sélectionné par
défaut dans un formulaire et donc d'imoser le clic pour l'envoi du
formulaire.
Comment faire cela ?

Si ce n'est pas possible, comment récupérer le Js le nom du 'submit'
employé, s'il y en a plusieurs, de nom différents ?

Merci de votre aide.

Jc Samuel




Avatar
Saad Saad
Salut,

Suffit de remplacer

<input type="submit"...

par

<input type="button"

auquel tu donne l'évenement suivant :

onclick="this.form.submit();"

--
Saad Saad


PERSONAL COMPUTERS (J.C.SAMUEL) wrote:
Bonjour à tous,

Je cherche à empêcher le fait qu'un bouton 'submit' soit sélectionné par
défaut dans un formulaire et donc d'imoser le clic pour l'envoi du
formulaire.
Comment faire cela ?

Si ce n'est pas possible, comment récupérer le Js le nom du 'submit'
employé, s'il y en a plusieurs, de nom différents ?

Merci de votre aide.

Jc Samuel




Avatar

PERSONAL COMPUTERS (J.C.SAMUEL) wrote:
Bonjour à tous,

Je cherche à empêcher le fait qu'un bouton 'submit' soit sélectionné par
défaut dans un formulaire et donc d'imoser le clic pour l'envoi du
formulaire.
Comment faire cela ?


Salut,

Suffit de remplacer

<input type="submit"...


Ah ?
Tiens, c'est nouveau ça comme non-astuce !

quand on sait qu'un formulaire peut être envoyé sans aucun bouton ...
(donc par la touche Entree)


Si ce n'est pas possible, comment récupérer le Js le nom du 'submit'
employé, s'il y en a plusieurs, de nom différents ?



???
(à mon idée)
il ne peut il y avoir qu'un seul submit par formulaire ...

mais il est possible d'avoir plusieurs boutons pour soumettre
des formulaires inclus dans la même page

<form name="form1" action="page1.htm"></form>
<form name="form2" action="page2.htm"></form>
<form name="form2" action="page3.htm"></form>
<form >
<input type=button onclick="document.form1.submit();" value="P 1">
<input type=button onclick="document.form2.submit();" value="P 2">
<input type=button onclick="document.form3.submit();" value="P 3">
</form>

--
******** (enlever/remove [OTER_MOI] du/from reply url) *******


Avatar
Yann-Erwan Perio
@SM wrote:

Salut,

(à mon idée)
il ne peut il y avoir qu'un seul submit par formulaire ...


En fait, HTML4 permet autant de boutons SUBMIT que nécessaire, et cela
permet de différencier l'action à mener sur le formulaire en fonction du
bouton pressé (seul le bouton submit "successful" est envoyé vers le
serveur) et non d'un autre élément du formulaire (comme une checkbox,
par exemple) ou d'une dépendance javascript
(document.forms["monform"].submit() échoue dans tous les browsers ayant
javascript désactivé, c'est presque du déni de service en dehors
d'intranets:-)).

Un exemple intéressant est le formulaire de "post" de Google pour les
groupes UseNet; Google a créé deux boutons: le premier bouton est
"Preview", qui permet de visualiser le post, et le second est "Post",
qui permet de l'envoyer.

Pour relier à la problématique du [enter], c'est le premier bouton
submit qui est pressé avec le [enter], il peut donc être utilisé comme
"dummy" ou comme fonctionnalité "sans écriture" (le presser ne porte pas
préjudice à l'utilisateur).

La touche [enter] permet de soumettre le formulaire, mais ce
comportement est différent suivant les navigateurs; une possibilité pour
empêcher ce comportement est de capturer la touche [enter] sur la
textbox fautive.

---
<form action="foo">
<input type="text" onkeypress="return bar(event)">
<input type="submit">
</form>

<script type="text/javascript">
function bar(evt){
return (evt.keyCode||evt.which) != 13;
}
</script>
---


Cordialement,
Yep.

Avatar
Saad Saad
Hi,

Ou est le problème, si il n'y à pas de button Submit ET si il y a plus
d'une zone de texte (<input type="text">) mon astuce fonctionne parfaitement


--
Saad Saad


@SM wrote:


PERSONAL COMPUTERS (J.C.SAMUEL) wrote:

Bonjour à tous,

Je cherche à empêcher le fait qu'un bouton 'submit' soit sélectionné par
défaut dans un formulaire et donc d'imoser le clic pour l'envoi du
formulaire.
Comment faire cela ?


Salut,

Suffit de remplacer

<input type="submit"...



Ah ?
Tiens, c'est nouveau ça comme non-astuce !

quand on sait qu'un formulaire peut être envoyé sans aucun bouton ...
(donc par la touche Entree)



Si ce n'est pas possible, comment récupérer le Js le nom du 'submit'
employé, s'il y en a plusieurs, de nom différents ?




???
(à mon idée)
il ne peut il y avoir qu'un seul submit par formulaire ...

mais il est possible d'avoir plusieurs boutons pour soumettre
des formulaires inclus dans la même page

<form name="form1" action="page1.htm"></form>
<form name="form2" action="page2.htm"></form>
<form name="form2" action="page3.htm"></form>
<form >
<input type=button onclick="document.form1.submit();" value="P 1">
<input type=button onclick="document.form2.submit();" value="P 2">
<input type=button onclick="document.form3.submit();" value="P 3">
</form>





Avatar

@SM wrote:

Salut,

ou d'une dépendance javascript
javascript désactivé, c'est presque du déni de service en dehors
d'intranets:-)).


faudrait donc en parler à de nombreux sites "majeurs" qui en usent
et en abusent ...
:-/

Un exemple intéressant est le formulaire de "post" de Google pour les
groupes UseNet; Google a créé deux boutons: le premier bouton est
"Preview", qui permet de visualiser le post, et le second est "Post",
qui permet de l'envoyer.


Ah?
et comment fonctionne-ce ?
si je presse un des submit du formulaire
il va, indépendamment de sa valeur, lancer le même action du form

sauf à avoir un post-traitement de ce form sur le serveur
(suivant le id, nom ou value du bouton actionné)
je ne vois pas comment la decision de post ou de preview
peut être décidée en HTML4

La touche [enter] permet de soumettre le formulaire, mais ce
comportement est différent suivant les navigateurs; une possibilité pour
empêcher ce comportement est de capturer la touche [enter] sur la
textbox fautive.

---
<form action="foo">
<input type="text" onkeypress="return bar(event)">
<input type="submit">
</form>

<script type="text/javascript">
function bar(evt){
return (evt.keyCode||evt.which) != 13;


return ((evt.keyCode||evt.which) != 13
&& (evt.keyCode||evt.which) != 3);

}
</script>
---


cordialement

--
******** (enlever/remove [OTER_MOI] du/from reply url) *******

Avatar

Hi,

Ou est le problème, si il n'y à pas de button Submit ET si il y a plus
d'une zone de texte (<input type="text">) mon astuce fonctionne parfaitement


Non, ça ne fonctionne pas !
en tous cas .. pas avec mon IE

Le test :
<html>
<form action="011.htm" target="_blank">
<input type=text>
<p><input type=text>
<p><input type=text>
<p><input type=button onclick="this.form.submit();" value=OK>
</form>
</html>

@SM wrote:


Suffit de remplacer

<input type="submit"...



Ah ?
Tiens, c'est nouveau ça comme non-astuce !

quand on sait qu'un formulaire peut être envoyé sans aucun bouton ...
(donc par la touche Entree)





Avatar
Yann-Erwan Perio
@SM wrote:

Salut Stéphane,

faudrait donc en parler à de nombreux sites "majeurs" qui en usent
et en abusent ...
:-/


S'il n'y avait que ça! La plupart des sites "commerciaux" n'ont même pas
de HTML valide, ou utilisent javascript comme navigation principale,
sans même esquisser la moindre stratégie de fallback pour les browsers
qui en sont dépourvus.

Le browser-scripting a souvent été considéré/méprisé comme facile, et
pourtant c'est un des domaines les plus difficiles, avec un
environnement d'exécution inconnu et un langage (js) qui peut être codé
de façon procédurale, objet ou fonctionnelle!

Un exemple intéressant est le formulaire de "post" de Google pour les
groupes UseNet; Google a créé deux boutons: le premier bouton est
"Preview", qui permet de visualiser le post, et le second est "Post",
qui permet de l'envoyer.


si je presse un des submit du formulaire
il va, indépendamment de sa valeur, lancer le même action du form
sauf à avoir un post-traitement de ce form sur le serveur
(suivant le id, nom ou value du bouton actionné)


C'est exactement cela; le bouton submit pressé sera transmis également,
il suffit de lui donner un nom explicit et de récupérer le nom à partir
des Request.Form (ou équivalent).

<input type="submit" name="preview" value="Preview">
<input type="submit" name="post" value="Post">

Quant au post-traitement, il faut bien wqu'il y ait un traitement sur le
serveur; que tu aies deux pages (une pour chaque action) ou une page
avec du proxying et des includes, c'est une question de conception
applicative généralement facilement résolue IMHO.

return ((evt.keyCode||evt.which) != 13
&& (evt.keyCode||evt.which) != 3);


3?


Cordialement,
Yep.


Avatar
Saad Saad
Bizarre, bizarre,

je viens de le tester avec :

IE 6 Ok
Mozilla 1.7 Ok
FireFox 0.9.3 Ok
Netscape 4.7 Ok
Netscape 7.1 Ok
Opera 7.5 il exécute le formulaire dans tous les cas.

Le tout sous XP

C'est donc possible qu'avec certain browsers le truc ne fonctionne pas

--
Saad Saad


@SM wrote:


Hi,

Ou est le problème, si il n'y à pas de button Submit ET si il y a plus
d'une zone de texte (<input type="text">) mon astuce fonctionne parfaitement



Non, ça ne fonctionne pas !
en tous cas .. pas avec mon IE

Le test :
<html>
<form action="011.htm" target="_blank">
<input type=text>
<p><input type=text>
<p><input type=text>
<p><input type=button onclick="this.form.submit();" value=OK>
</form>
</html>

@SM wrote:



Suffit de remplacer

<input type="submit"...



Ah ?
Tiens, c'est nouveau ça comme non-astuce !

quand on sait qu'un formulaire peut être envoyé sans aucun bouton ...
(donc par la touche Entree)







Avatar

salut'Yann

@SM wrote:

return ((evt.keyCode||evt.which) != 13
&& (evt.keyCode||evt.which) != 3);


3?


touche de validation du pavé numérique [ = ] ( sur mon Mac ...)
qui double la touche [Entrée]

--
******** (enlever/remove [OTER_MOI] du/from reply url) *******


1 2