Bonjour,
Prérequis : je suis une bille en javascript, je le gère avec PHP, mais la il faut,
je rame depuis 3 jours... hic.
voila j'ai le code HTML généré :[PEAR/SMARTY]
le javascript doit me permettre de vérifier chaque champ,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72 <THEAD> <tr BGCOLOR="#FFFFB0" align="left"> <th>Num</th> <th>Identifiant</th> <th>Libéllé court</th> <th>Niveau formation</th> <th>Libéllé long</th> <th>Effectif min</th> <th>Effectif max</th> <th>Nombres d'heures</th> <th alt="Suppression des lignes">Suppression</th> </tr> </THEAD> <TR BGCOLOR="#FFFFB0"> <TD>0</TD> <TD>32020108</TD> <TD>BTS</TD> <TD>320</TD> <TD>CONTROLE INDUSTRIEL ET REGULATION AUTOMATIQUE (BTS)</TD> <TD><input type="text" name="effmin[]" value="" size="4" maxlength="4" /></TD> <TD><input type="text" name="effmax[]" value="" size="4" maxlength="4" /></TD> <TD><input type="text" name="nbheures[]" value="" size="4" maxlength="4" /></TD> <TD><p><input type="checkbox" name="check[]" value="0_32020108"/></p></TD> </TR> <TR BGCOLOR="#FFFFB0"> <TD>2</TD> <TD>32020108</TD> <TD>BTS</TD> <TD>320</TD> <TD>CONTROLE INDUSTRIEL ET REGULATION AUTOMATIQUE (BTS)</TD> <TD><input type="text" name="effmin[]" value="" size="4" maxlength="4" /></TD> <TD><input type="text" name="effmax[]" value="" size="4" maxlength="4" /></TD> <TD><input type="text" name="nbheures[]" value="" size="4" maxlength="4" /></TD> <TD><p><input type="checkbox" name="check[]" value="2_32020108"/></p></TD> </TR> <TR BGCOLOR="#FFFFB0"> <TD>4</TD> <TD>32020108</TD> <TD>BTS</TD> <TD>320</TD> <TD>CONTROLE INDUSTRIEL ET REGULATION AUTOMATIQUE (BTS)</TD> <TD><input type="text" name="effmin[]" value="" size="4" maxlength="4" /></TD> <TD><input type="text" name="effmax[]" value="" size="4" maxlength="4" /></TD> <TD><input type="text" name="nbheures[]" value="" size="4" maxlength="4" /></TD> <TD><p><input type="checkbox" name="check[]" value="4_32020108"/></p></TD> </TR> ... <TD> <input type="submit" name="supprimer" value="supprimer"/> </TD> <TD> <input type="submit" name="save" onclick="return (is_numeric('frmsauv','effmin[]','Effectifs minimun','min','max') && is_numeric('frmsauv','effmax[]','Effectifs max','min','max') && is_numeric('frmsauv','nbheures[]','Nombres d heures','min','max'));" value="Enregistrer"/> </TD> </TR> </TABLE> </form>
validité entier et non nulle, le plus, les champs change de couleur .
mais quand il n'y a qu'une ligne le javascript passe sans pb,
même si toutes les valeurs sont fausses.
le javascript function is_numeric(formName,liste,nomduchamp,min,max)
Aux gourous de javascript, piiitiè pour un infidèle
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 { var error = new Array; var isnotentier = new Array; var message= " : Valeur de lignes erronées\n" ; var champ = nomduchamp + " :"; var k = 0; var sortie = true; for(i=0;<document.forms[formName].elements[liste].length;i++) { document.forms[formName].elements[liste][i].style.backgroundColor = "#FFF"; if(document.forms[formName].elements[liste][i].value =="") { alert(i); error[i] = i+1; document.forms[formName].elements[liste][i].style.backgroundColor = "#F3C200"; } if( !is_number(document.forms[formName].elements[liste][i].value)){ isnotentier[k] = i+1; document.forms[formName].elements[liste][i].style.backgroundColor = "#F3F200"; k++ } } if(error.length > 0){ alert(champ + message + error.toString()); sortie = false; }else{ if(isnotentier.length > 0){ champ += " problème de type\n numéro de champ => " alert(champ + isnotentier.toString()); sortie = false; }else{ sortie = true; } } return sortie; }
la fonction isnotentier me renvoie l'inverse de la fonction isNaN
bon bref.
En fait, si j'ai une ligne rien ne se passe.
si j'ai deux lignes, tous fonctionne
je passe le formulaire dans la fonction
is_numeric('frmsauv','nbheures[]','Nombres d heures','min','max'))
rmq : min, max sont pour l'instant non utilisé.
Question 0:
je ne comprends pas ce effmin[], en html c'est un alias
ou un vrai tableau,je ne trouve que des exemples mais pas
d'explication, quels différence entre efmin sur plusieurs lignes et effmin[]
les crochets me perturbent.
Question 1;
comment récupérer correctement la taille du nombre d'éléments nbheures[]
Question 2;
quand la taille de nbheures[] est de 1 une ligne , j'ai une variable udefined.
comme si document.forms[formName].elements[liste].length ne valait rien???
je m'y prends mal, cela fait parti de mon apprentissage.
Question 3; une solution un lien, j'ai encore manqué quelque chose ...
si vous pouvez m'éclairer, merci d'avance.
olivier
Partager