Page 1 sur 2

éléments form

Posté : 06 avr. 2006, 20:29
par Invité
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?

Posté : 06 avr. 2006, 23:53
par PhilFree
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 "

Posté : 07 avr. 2006, 00:10
par Invité
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?

Posté : 07 avr. 2006, 00:13
par Invité
pareil entre les balises head...

Posté : 07 avr. 2006, 00:18
par Invité
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>

Posté : 07 avr. 2006, 00:18
par PhilFree
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>

Posté : 07 avr. 2006, 00:26
par Invité
je ne comprends pas...ceci marche:
alert("bonjour"); 
mais ceci ne marche pas:
var test="bonjour"; 
alert(test); 

Posté : 07 avr. 2006, 00:29
par Invité
ça veut dire qu'on ne peut pas récupérer les valeurs avec javascript, sans envoyer le formulaire?

Posté : 07 avr. 2006, 00:29
par PhilFree
Bien sûr que ça marche...il se fait tard tu devrais aller dormir et relire tout ça demain matin... :wink:

Posté : 07 avr. 2006, 11:27
par Invité
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?

Posté : 07 avr. 2006, 14:26
par Invité
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"]=...
}

Posté : 07 avr. 2006, 16:37
par Invité
ya til l'équivalent de la fonction foreach (php) en javascript?

Posté : 07 avr. 2006, 17:10
par Invité
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');
} 

Posté : 07 avr. 2006, 18:33
par Invité
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?

Posté : 08 avr. 2006, 09:20
par Invité
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?