éléments form

Invité
Invité n'ayant pas de compte PHPfrance

06 avr. 2006, 20:29

Bonjour à tous,
j'utilise la syntaxe javascript suivante pour récupérer la veleur d'un champ de formulaire
document.all["champ1"].value;
existe-il une syntaxe pour récupérer toutes les valeurs d'un coup sans devoir préciser les id ou les noms?

Eléphant du PHP | 172 Messages

06 avr. 2006, 23:53

Salut,

Pour récupérer les données ou les valeurs de chaque champ d'un formulaire, il faut utiliser le méthode "search" :

Exemple:

Soit le formulaire:
<form method="get" action="get.htm">
  <p>Nom : <input type="text" name="nom" /></p>
  <p>Prénom : <input type="text" name="prenom" /></p>
  <p>Téléphone : <input type="text" name="telephone" /></p>
  <p><input type="submit" name="Submit" value="Soumettre" /></p>
</form>
Dans la page get.htm, si tu fais:
nReq = location.search
nReq contiendra " ?nom=valeur&prenom=valeur&telephone=valeur "
Modifié en dernier par PhilFree le 07 avr. 2006, 00:11, modifié 1 fois.

Invité
Invité n'ayant pas de compte PHPfrance

07 avr. 2006, 00:10

j'ai mis ceci enbas de mon form
<script language="text/javascript">
<!--
test=location.search;
alert(test);
-->
</script>
pourtant j'ai d'autres fonctions js qui marchent, mais elles sont dans un fichier inclus...est-ce normal?

Invité
Invité n'ayant pas de compte PHPfrance

07 avr. 2006, 00:13

pareil entre les balises head...

Invité
Invité n'ayant pas de compte PHPfrance

07 avr. 2006, 00:18

j'ai oublié une phrase, lol. je veux dire que le script ne fonctionne pas, qu'il soit placé en bas du formou dans les balises <head>

Eléphant du PHP | 172 Messages

07 avr. 2006, 00:18

La page get.htm:
<html>
<head>
	<title></title>
</head>

<body>
<script type="text/javascript">
<!--
alert(nReq = location.search);

//-->
</script>

</body>

</html>
La page formulaire.htm:
<html>
<head>
	<title></title>
</head>

<body>
<form method="get" action="get.htm">
  <p>Nom : <input type="text" name="nom" /></p>
  <p>Prénom : <input type="text" name="prenom" /></p>
  <p>Téléphone : <input type="text" name="telephone" /></p>
  <p><input type="submit" name="Submit" value="Soumettre" /></p>
</form>

</body>

</html>

Invité
Invité n'ayant pas de compte PHPfrance

07 avr. 2006, 00:26

je ne comprends pas...ceci marche:
alert("bonjour"); 
mais ceci ne marche pas:
var test="bonjour"; 
alert(test); 

Invité
Invité n'ayant pas de compte PHPfrance

07 avr. 2006, 00:29

ça veut dire qu'on ne peut pas récupérer les valeurs avec javascript, sans envoyer le formulaire?

Eléphant du PHP | 172 Messages

07 avr. 2006, 00:29

Bien sûr que ça marche...il se fait tard tu devrais aller dormir et relire tout ça demain matin... :wink:

Invité
Invité n'ayant pas de compte PHPfrance

07 avr. 2006, 11:27

j'a bien dormi et effectivement ça va mieux!
dans la balise script, j'ai mis type au lieu de language.

sinon pour en revenir à ma question, n'y a -t-il pas un moyen de récupérer en javascript toutes les valeurs d'un formulaire sans avoir à l'envoyer?

Invité
Invité n'ayant pas de compte PHPfrance

07 avr. 2006, 14:26

bon ben a priori c'est pas possible...la seule solution de faire un array avec les noms des éléments du form.
en suite je parcours le tableau en utilisant la syntaxe
for (i...) '
document.forms["form"].elements["var_array+i"]=...
}

Invité
Invité n'ayant pas de compte PHPfrance

07 avr. 2006, 16:37

ya til l'équivalent de la fonction foreach (php) en javascript?

Invité
Invité n'ayant pas de compte PHPfrance

07 avr. 2006, 17:10

pour ceux que ça intéresse, voici le script qui permet de récup toutes les vars d'un form en une fois:
var a;
var i = 0;
var MonForm = document.forms["form1"];
for( a in MonForm)
{
  i++;
  alert("$" + MonForm.elements[a].name + ' = ' + MonForm.elements[a].value + '\n');
} 

Invité
Invité n'ayant pas de compte PHPfrance

07 avr. 2006, 18:33

seul problème, c'est qu'il y a une incrémentation en trop. la boucle s'exécute pour tous les éléments du form + 1...comment arranger ça?

Invité
Invité n'ayant pas de compte PHPfrance

08 avr. 2006, 09:20

pour enlever la dernière incrémentation, j'ai fait ceci:
for( (a-1) in MonForm) 
{ 
  ...
} 
La syntaxe ne semble pas être bonne...avez vous une idée?