IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

tableau contrôle de valeur


Sujet :

JavaScript

  1. #1
    Membre expérimenté Avatar de nathieb
    Homme Profil pro
    DevOps
    Inscrit en
    Mai 2004
    Messages
    1 058
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : DevOps
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 058
    Points : 1 532
    Points
    1 532
    Par défaut tableau contrôle de valeur
    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]

    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&eacute;ll&eacute; court</th>
    					         <th>Niveau formation</th>
     
    					         <th>Lib&eacute;ll&eacute; 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>
    le javascript doit me permettre de vérifier chaque champ,
    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)
    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;
    }
    Aux gourous de javascript, piiitiè pour un infidèle


    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

  2. #2
    Membre confirmé Avatar de d-Rek
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    438
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2007
    Messages : 438
    Points : 455
    Points
    455
    Par défaut
    Dans un premier temps, vire les chochets de effmin[], effmax[] etc.. laisse juste effmin, effmax

    Dans un second temps :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function check(){
    	with(document.name_de_ton_form){
    		//tu bosses directement avec les éléments de ton form
    		element_name.value='toto';
    	}
    }
    Les name de tes inputs doivent être différents sinon comment les différencier ?
    Si tu as 4 input par ligne, tu fais un Math.floor(document.name_de_ton_form.elements.length/4) et t'as ton nombre de lignes.. Avec PHP, tu mets un indice dans tes name genre effmin0 effmax0 puis effmin1 etc...

    Après c'est du gateau ! Quoi "non" ?

Discussions similaires

  1. Réponses: 14
    Dernier message: 18/08/2006, 18h54
  2. [C# 2.0] Contrôles de valeurs au changement d'onglet
    Par oodini dans le forum Windows Forms
    Réponses: 10
    Dernier message: 06/07/2006, 11h11
  3. Réponses: 18
    Dernier message: 28/04/2006, 11h00
  4. Tableau JS avec valeurs PHP
    Par Gobouz dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 19/04/2006, 11h28
  5. Réponses: 3
    Dernier message: 26/07/2004, 12h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo