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

Accéder aux tableaux d'un formulaire

3 réponses
Avatar
JCR
Bonjour,

Je voudrais vérifier les données d'un formulaire contenant des tableaux.
Je n'arrive pas à accéder aux éléments du tableau à partir d'un script
JavaScript, j'obtiens à chaque fois le message :
form.Tableau has no properties.

Voici un exemple simplifié :

<SCRIPT language="javascript" type="text/javascript">
function Validate(form)
{
alert (form.Name[0].value);
return false;
}
</SCRIPT>

<form action="test.html" method="post">
Names<BR>
<input type="text" name="Name[]" size="20" value=""><BR>
<input type="text" name="Name[]" size="20" value=""><BR>
<input type="text" name="Name[]" size="20" value=""><BR>
<input type="text" name="Name[]" size="20" value=""><BR>
<input type="submit" onClick="return Validate(this.form)" name="Upload"
value="Submit">
</form>

Peut-être y a-t-il une autre syntaxe à utiliser, à la place de
form.Name[0].value ?

Merci pour votre aide,
Jean-Claude

3 réponses

Avatar
Elegie
JCR wrote:

Bonjour,

Je voudrais vérifier les données d'un formulaire contenant des tableaux.


L'exemple que vous citez ne fait intervenir aucun tableau (en dehors de
la collection de contrôles), simplement un identifiant contenant des
crochets.

alert (form.Name[0].value);

<input type="text" name="Name[]" size="20" value=""><BR>


Les crochets, dans la syntaxe javascript, occupent un rôle bien
particulier. Bien qu'il soit parfaitement légal de les utiliser dans un
identifiant, il vous faut alors utiliser une autre notation pour accéder
à la valeur de la propriété référencée par cet identifiant : la notation
dite "tableau".

Utilisez :

alert (form.elements["Name[]"][0].value);

Plus d'informations, en anglais :

<URL:http://jibbering.com/faq/#FAQ4_39>
<URL:http://www.jibbering.com/faq/faq_notes/square_brackets.html>

Bonne journée.

Avatar
JCR

Les crochets, dans la syntaxe javascript, occupent un rôle bien
particulier. Bien qu'il soit parfaitement légal de les utiliser dans un
identifiant, il vous faut alors utiliser une autre notation pour accéder
à la valeur de la propriété référencée par cet identifiant : la notation
dite "tableau".

Utilisez :

alert (form.elements["Name[]"][0].value);

Plus d'informations, en anglais :

<URL:http://jibbering.com/faq/#FAQ4_39>
<URL:http://www.jibbering.com/faq/faq_notes/square_brackets.html>

Bonne journée.




Merci !

Avatar
ASM
Bonjour,

Je voudrais vérifier les données d'un formulaire contenant des tableaux.
Je n'arrive pas à accéder aux éléments du tableau à partir d'un script
JavaScript, j'obtiens à chaque fois le message :
form.Tableau has no properties.

Voici un exemple simplifié :

<SCRIPT language="javascript" type="text/javascript">
function Validate(form)
{
alert (form.Name[0].value);


Ça ne peut fonctionner comme ça, il faut faire une boucle sur les
éléments du formulaire

function validate(form) {
// collection des éléments du form qui ont pour nom 'Name[]' :
var f = form.elements('Name[]');
// boucle pour vérifier chacun d'eux :
for(var i=0; i<f.length; i++) {
if(f[i].value == '' || f[i].value.length<1)
alert('champ non rempli');
f[i].focus();
f[i].select();
return false;
}
return true;
}


</SCRIPT>

<form action="test.html" method="post">


La fonction validate() s'emploie comme ceci :

<form action="test.html" method="post"
onsubmit="return validate(this);">

et non pas sur le bouton d'envoi

(qui va m'empêcher d'envoyer par la touche Entree ?)
(et donc sans le bouton de submit ...)

Names<BR>
<input type="text" name="Name[]" size="20" value=""><BR>
<input type="text" name="Name[]" size="20" value=""><BR>
<input type="text" name="Name[]" size="20" value=""><BR>
<input type="text" name="Name[]" size="20" value=""><BR>
<input type="submit" onClick="return Validate(this.form)" name="Upload"
value="Submit">
</form>



--
Stephane Moriaux et son (moins) vieux Mac déjà dépassé