Bonjour,
j'essaie de faire un controle générique pour des champs de type différentes (input,select...) avec des formats différents (date,email,numérique,texte)
La fonction onChange est appellé des le chargement de la page, donc j'essaie d'associer a chaque changement de mon input 'date_naissance' definit dans le tableau mesChampsControleDate à un controle de date. Le probleme est qu'il y plusieurs enregistrements donc le nom de mes champs input pour la date vont être: 'date_naissance' pour le premier enregistrement 'date_naissance_1' pour le deuxième enregistrement. Ici j'ai testé avec 2 enregistrement mais le principe reste le meme avec n enregistrements.
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 var mesChampsControleDate=['date_naissance']; var mesChampsControleNumerique=[]; var mesChampsControleEmail=[]; //si pas de controle mesChampsControleEmail=[]; ///-----------------------------a completer-----------------------------------/// ///----------------------------onChange------------------------------------/// function onChange() { //controle Date xt$ =""; var elem = ""; for(var i=0;i<mesChampsControleDate.length;i++){ for (var k=0;k<nbLigneEnregistrement;k++) { if (k>0) xt$='_'+k; var nomElement = mesChampsControleDate[i]+xt$; //alert("nom element1: "+nomElement); elem = ""; elem = document.getElementsByName(nomElement); alert("nom element: "+elem(0).name); elem(0).onchange = function() { alert("nom elem1: "+elem(0).name); alert("nom elem2: "+elem.name); alert("j'appelele function1: "+elem(0).value); modifiedDoc=true; controleDateValide(elem(0)); }; } } //controle numerique /*xt$ =""; for(var i=0;i<mesChampsControleNumerique.length;i++){ for (var k=0;k<nbLigneEnregistrement;k++) { if (k>0) xt$='_'+k; var nomElement = mesChampsControleNumerique[i]+xt$; var elem = document.getElementsByName(nomElement); elem(0).onchange = function() { //controleDateValide(elem(0)); if (isNaN(elem.value)) error(elem(0).name,MSGC_FLOAT); }; } }*/ /*xt$ =""; for(var i=0;i<mesChampsControleEmail.length;i++){ if (i>0) xt$='_'+i; if (mesChampsControleEmail[i]==elem.name) return true; }*/ }
le probleme se declenche ici
Le probleme c'est quand je change ma valeur de l'input date_naissance c'est la valeur de l'input date_naissance_1 qui est controlé lors de l'appelle a
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 alert("nom element: "+elem(0).name); //ici j'ai le bon element elem(0).onchange = function() { //ici je récupère tous le temps le dernier element (c est a dire date_naissance_1) alert("nom elem1: "+elem(0).name); alert("nom elem2: "+elem.name); alert("j'appelele function1: "+elem(0).value); modifiedDoc=true; controleDateValide(elem(0)); };
j'espere que j'ai été a peu près clairdans mes explication
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 controleDateValide(elem(0));
merci d'avance
Partager