Bonjour.

C'est mon premier post sur ce forum. en règle générale je me débrouille tout seul, mais là j'ai une question à propos d'un truc que je considère comme étrange (ou normal).

Je veux faire un changement de l'action d'un form en fonction de la valeur saisie dans un input.
Pas de soucis, çà marche.... mais je me rend compte que mon form est "submité" sur simple validation de l'input alors que je n'est aucun bouton submit, ni de submit sur un onChange (le on submit déclenche si je valide mon input au clavier).

Mon form ne comporte qu'un input, et c'est tout. Si j'en met deux, alors là le onSubmit ne se déclenche pas "tout seul".

C'est peut être normal, peut être qu'il y a une règle implicite du genre :
"un seul élément dans un form = submit sur validation clavier..."

Mais est-ce un comportement normal et identique sur tous les navigateurs ?

Mon code de test est tout simple :


<body>

<script type="text/javascript"> 
function envoi_form(valeur){ 
/* if (valeur=='connexion') {document.formr.action = "";} else {document.formr.action = "resultat.php";} */
/* document.formr.submit(); */
alert(valeur); return false;} 
</script>

<form id="formr" name="formr" method="get" action="" onsubmit="envoi_form(document.formr.chaine.value)">
  <label for="chaine">Chercher :</label>
  <input name="chaine" type="text" id="chaine" size="12"  <?php if(isset($affiche_chaine_recherche_rapide)) {?>value="toto"<?php }?> />
</form>
</body>


Merci d'avance.

Franck
Modifié par florealpes (21 Nov 2013 - 10:21)
Ta syntaxe n'est pas corecte,
ajoutes un bouton hidden de submit
et surtout bloque avec un false Smiley ohwell


onsubmit='envoi_form(document.formr.chaine.value);return false' action='' 
Merci Cristele pour ta réponse,

... mais je crois que je me suis mal expliqué et mon exemple est pas forcement très bon car sorti du contexte. Je ne veut pas empêcher le onsubmit, mais je suis dérangé par son déclenchement...

Avec le code super simple suivant :


<form name="formr" method="get" action="" onsubmit="alert('parti...')">
  <label for="chaine">Chercher :</label>
  <input name="chaine" type="text" id="chaine" size="12" />
</form>


Tu saisi dans l'input et tu valide par le clavier : le onSubmit se déclenche...
Ça me va très bien car je n'ai pas envie de mettre un bouton ou autre chose.

Par contre, tu vois que le Onsubmit se déclenche sur un simple "onchange" (qui n'existe pas) de l'input...

Et là, ce qui me gêne c'est de savoir si c'est un comportement normal et reproductible sur tous les navigateurs ?

en gros, y'a t'il une règle du genre :
si form à un unique élément, alors onchange provoque le submit du form...

(si tu mets deux éléments, pas de soucis, le onsubmit ne part que si tu as un bouton pour çà ou un submit() en javascript...)

A bientôt
Modérateur
Bonjour,

À mon avis, tu as un autre script quelque part qui gère l'évènement onchange du champ. Fais le tour des autres scripts en place dans ta page.

Pour t'en convaincre, crée-toi une page vide avec uniquement le code simple que tu nous as fourni. Tu verras que le formulaire ne s'envoie pas automatiquement sur l'évènement onchange.

Bon courage!
Modifié par Tony Monast (21 Nov 2013 - 21:37)
Bonjour.

C'est ce que j'ai cherché en premier avant de poster sur le forum.

Mais non, ma page de test est COMPLETEMENT VIDE à part le form !, pas de scripts, pas d'includes..

Je l'ai mise en ligne dans un coin si tu veux tester : page de test
(saisi dans l'input et valide au clavier, l'alert du onsubmit se déclenche...) Smiley eek

La page entière :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Document sans titre</title>
</head>

<body>
<form name="formr" method="get" action="" onsubmit="alert('parti...')">
  <label for="chaine">Chercher :</label>
  <input name="chaine" type="text" id="chaine" size="12" />
</form>
</body>
</html>


A bientôt
Modifié par florealpes (22 Nov 2013 - 17:43)
Modérateur
C'est un comportement normal que la touche Enter du clavier soumet le formulaire, peu importe le nombre de champs. Ce n'est pas sur onchange que le formulaire est envoyé.
Modifié par Tony Monast (22 Nov 2013 - 19:04)
Ok, merci.

Je ne savais pas que la touche Enter soumettait "systématiquement" le formulaire, je n'y avait jamais fait attention...

C'est quand même un drôle de truc, çà peut provoquer des soumission un peu rapide.

Merci.

A+