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 :

Test d'un input text dynamique avec js


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2009
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2009
    Messages : 30
    Points : 22
    Points
    22
    Par défaut Test d'un input text dynamique avec js
    Bonsoir,
    J'ai un problème avec le test d'un input text dynamique. En effet, dans le code ci-joint l'utilisateur peut à son grée ajouter ou pas des éléments AutreNo...le souci est que je n'arrive pas à trouver la bonne parade me permettant de vérifier que les champs (pouvant varier de 1 à 5) sont de type numérique... en gros j'aimerais pouvoir effectuer le même test que l'input type NoContenant (qui lui fonctionne), le champ de ce dernier devient jaune si la saisie n'est pas numérique (ex.: toto).
    Qui a une idée sur comment contrer cette problématique ?
    Je vous remercie d'avance pour votre aide.
    A+

    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
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    <html>
    <head>
    <title>Test de vérification de formulaire</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>
     
    <script language="javascript">
    //<--
    function couleur(obj) {
         obj.style.backgroundColor = "#FFFFFF";
    }
     
    function check() {
    	var msg = "";
    	if (document.form1.NoContenant.value != "")	{
    		var valeur = document.form1.NoContenant.value;
    		if(!(/^\d+$/.test(valeur))) {
    			msg += "Veuillez saisir un numéro\n";
    			document.form1.NoContenant.style.backgroundColor = "#F3C200";
    		}
    	}
    	var AutreNo = document.getElementById('T_INSERT');
    	var issue = 0;
    	for (var i=0; i<AutreNo.rows.length; i++){
    		alert(AutreNo.value);
    		if(!(/^\d+$/.test(AutreNo.rows.value))){
    			issue = 1;
    		}
    	}
    	if (issue == 1) {
    		msg += "Veuillez saisir un numéro\n";
    	}
     
    	if (msg == "") return(true);
    	else	{
    		alert(msg);
    		return(false);
    	}
    }
     
    var Compteur = 0;
    function Delete_Ligne( obj_){
      var Parent;
      var Obj = obj_;
      if( Obj){
        do{							//-- tant que pas la balise <TR>
           Obj = Obj.parentNode;
        }while( Obj.tagName != "TR")
        Parent = Obj.parentNode;	//-- Recup du parent
        if( Parent){				//-- Suppression de la ligne
          Parent.deleteRow( Obj.rowIndex)
          --Compteur;
    	}
      }
    }
    function Create_Ligne(){
    	if (Compteur <5){		//-- compteur pour limiter le nb de champ texte à 5 max
      		var O_Table = document.getElementById('T_INSERT');	//-- Get objet tableau
      		var NbrLigne = O_Table.rows.length;	//-- Get nombre de ligne du tableau
      		var Pos = NbrLigne;					//-- Position d'insertion
      		O_Row  = O_Table.insertRow( Pos);		//-- Insertion d'une ligne
      		Compteur++;							//-- Insertion d'une cellule
      		O_Cell = O_Row.insertCell(0);			//-- Insertion d'une autre cellule
      		O_Cell.innerHTML = 'Autre N°:';
      		O_Cell = O_Row.insertCell(1);
      		O_Cell.innerHTML = '<input type="text" name="AutreNo[]" size="5" />';
      		O_Cell = O_Row.insertCell(2);
      		O_Cell.innerHTML = '<input type="button" value=" - " onClick="Delete_Ligne(this)">';
    	}
    }
    //-->
    </script>
    <form action="page.html" method="post" enctype="application/x-www-form-urlencoded" name="form1"  onSubmit="return check();">
    <table>
    	<td>Numéro:
       <input type="text" name="NoContenant" size="4" onKeyUp="javascript:couleur(this);" /></td>
      	</tr>
     </table>
    <table border="0">
    <table id="T_INSERT">
    <tr>
    <td>Autre N°:</td>
    <td><input type="text" name="AutreNo[]" size="5"/>
    <td><input name="button" type="button" onClick="Create_Ligne()" value="  +  ">
    </tr>
    </table>
     <input type="submit" name="Submit" value="Envoyer">   
    </form>
    </body>
    </html>

  2. #2
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    Salut,

    Je crois que tu t'es un peu emmêlé les pinceaux dans tes numéros

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    for (var i=0; i<AutreNo.rows.length; i++){
      var numero = document.form1.elements["AutreNo[]"][i];
      alert(numero.value);
      if(!(/^\d+$/.test(numero.value))){
    	issue = 1;
      }
    }
    ERE
    Quand une tête pense seule, elle devient folle.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2009
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2009
    Messages : 30
    Points : 22
    Points
    22
    Par défaut
    Hello,

    Euuuh en effet , mais grâce à tes conseils mes pinceaux sont maintenant démêlés !
    MERCI BEAUCOUP !

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2009
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2009
    Messages : 30
    Points : 22
    Points
    22
    Par défaut
    Bonjour,

    Pour rappel, ce bout de code permet à un utilisateur d'ajouter 5 champs AutreNo (de type input type=text) avec un bouton + (et de retirer ces derniers avec un bouton -). Grâce à vos coups de main j'ai progresser dans le test de ces champs ...par contre je viens de constater un problème qui apparait lorsque l'utilisateur ne désirant pas ajouter des champs AutreNo supplémentaire introduit toto (par exemple) dans le seul champ disponible ... En gros, le test js ne s'effectue que quand AutreNo contient au moins 2 champs ?
    Pourquoi ? et y a t'il une astuce pour contrer ce problème ?
    Merci d'avance pour votre aide !(j'en ai besoin ..)

    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
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
     
    <html>
    <head>
    <title>Test de vérification de formulaire</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>
     
    <script language="javascript">
    //<--
    function couleur(obj) {
         obj.style.backgroundColor = "#FFFFFF";
    }
     
    function check() {
    	var msg = "";
    	if (document.form1.NoContenant.value != "")	{
    		var valeur = document.form1.NoContenant.value;
    		if(!(/^\d+$/.test(valeur))) {
    			msg += "Veuillez saisir un numéro\n";
    			document.form1.NoContenant.style.backgroundColor = "#F3C200";
    		}
    	}
    	var AutreNo = document.getElementById('T_INSERT');
    	var issue = 0;
    	for (var i=0; i<AutreNo.rows.length; i++){
    	  var numero = document.form1.elements["AutreNo[]"][i];
    	  alert(numero.value);
    	  if(!(/^\d+$/.test(numero.value))){
    			document.form1["AutreNo[]"][i].style.backgroundColor = "#F3C200";
      		issue = 1;
      	}
    	}
    	if (issue == 1) {
    		msg += "Veuillez saisir un numéro\n";
    	}
     
    	if (msg == "") return(true);
    	else	{
    		alert(msg);
    		return(false);
    	}
    }
     
    var Compteur = 0;
    function Delete_Ligne( obj_){
      var Parent;
      var Obj = obj_;
      if( Obj){
        do{							//-- tant que pas la balise <TR>
           Obj = Obj.parentNode;
        }while( Obj.tagName != "TR")
        Parent = Obj.parentNode;	//-- Recup du parent
        if( Parent){				//-- Suppression de la ligne
          Parent.deleteRow( Obj.rowIndex)
          --Compteur;
    	}
      }
    }
    function Create_Ligne(){
    	if (Compteur <5){		//-- compteur pour limiter le nb de champ texte à 5 max
      		var O_Table = document.getElementById('T_INSERT');	//-- Get objet tableau
      		var NbrLigne = O_Table.rows.length;	//-- Get nombre de ligne du tableau
      		var Pos = NbrLigne;					//-- Position d'insertion
      		O_Row  = O_Table.insertRow( Pos);		//-- Insertion d'une ligne
      		Compteur++;							//-- Insertion d'une cellule
      		O_Cell = O_Row.insertCell(0);			//-- Insertion d'une autre cellule
      		O_Cell.innerHTML = 'Autre N°:';
      		O_Cell = O_Row.insertCell(1);
      		O_Cell.innerHTML = '<input type="text" name="AutreNo[]" size="5" />';
      		O_Cell = O_Row.insertCell(2);
      		O_Cell.innerHTML = '<input type="button" value=" - " onClick="Delete_Ligne(this)">';
    	}
    }
    //-->
    </script>
    <form action="page.html" method="post" enctype="application/x-www-form-urlencoded" name="form1"  onSubmit="return check();">
    <table>
    	<td>Numéro:
       <input type="text" name="NoContenant" size="4" onKeyUp="javascript:couleur(this);" /></td>
      	</tr>
     </table>
    <table border="0">
    <table id="T_INSERT">
    <tr>
    <td>Autre N°:</td>
    <td><input type="text" name="AutreNo[]" size="5"/>
    <td><input name="button" type="button" onClick="Create_Ligne()" value="  +  ">
    </tr>
    </table>
     <input type="submit" name="Submit" value="Envoyer">   
    </form>
    </body>
    </html>

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2009
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2009
    Messages : 30
    Points : 22
    Points
    22
    Par défaut
    Bonsoir,

    Quelqu'un à une idée ?

    Merci d'avance pour toute aide.

  6. #6
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    Salut,

    Quelque chose comme:
    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
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    <html>
    <head>
    <title>Test de vérification de formulaire</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>
     
    <script language="javascript">
    //<--
    function couleur(obj) {
         obj.style.backgroundColor = "#FFFFFF";
    }
     
    function check() {
    	var msg = "";
    	if (document.form1.NoContenant.value != "")	{
    		var valeur = document.form1.NoContenant.value;
    		if(!(/^\d+$/.test(valeur))) {
    			msg += "Veuillez saisir un numéro\n";
    			document.form1.NoContenant.style.backgroundColor = "#F3C200";
    		}
    	}
    	var AutreNo = document.getElementById('T_INSERT');
    	var testNumero = function(numero) {
      	  alert(numero.value);
      	  if(!(/^\d+$/.test(numero.value))){
      			numero.style.backgroundColor = "#F3C200";
            return 1;    		
        	}
        	return 0;
      }
    	var issue = 0;
    	if (AutreNo.rows.length>1)
      	for (var i=0; i<AutreNo.rows.length; i++){
      	 issue = testNumero(document.form1.elements["AutreNo[]"][i]);
      	 if (issue==1) break;
        }
      else {
      	 issue = testNumero(document.form1.elements["AutreNo[]"]);
      }
     
      if (issue == 1) {
    		msg += "Veuillez saisir un numéro\n";
    	}
     
    	if (msg == "") return(true);
    	else	{
    		alert(msg);
    		return(false);
    	}
    }
     
    var Compteur = 0;
    function Delete_Ligne( obj_){
      var Parent;
      var Obj = obj_;
      if( Obj){
        do{							//-- tant que pas la balise <TR>
           Obj = Obj.parentNode;
        }while( Obj.tagName != "TR")
        Parent = Obj.parentNode;	//-- Recup du parent
        if( Parent){				//-- Suppression de la ligne
          Parent.deleteRow( Obj.rowIndex)
          --Compteur;
    	}
      }
    }
    function Create_Ligne(){
    	if (Compteur <5){		//-- compteur pour limiter le nb de champ texte à 5 max
      		var O_Table = document.getElementById('T_INSERT');	//-- Get objet tableau
      		var NbrLigne = O_Table.rows.length;	//-- Get nombre de ligne du tableau
      		var Pos = NbrLigne;					//-- Position d'insertion
      		O_Row  = O_Table.insertRow( Pos);		//-- Insertion d'une ligne
      		Compteur++;							//-- Insertion d'une cellule
      		O_Cell = O_Row.insertCell(0);			//-- Insertion d'une autre cellule
      		O_Cell.innerHTML = 'Autre N°:';
      		O_Cell = O_Row.insertCell(1);
      		O_Cell.innerHTML = '<input type="text" name="AutreNo[]" size="5" />';
      		O_Cell = O_Row.insertCell(2);
      		O_Cell.innerHTML = '<input type="button" value=" - " onClick="Delete_Ligne(this)">';
    	}
    }
    //-->
    </script>
    <form action="page.html" method="post" enctype="application/x-www-form-urlencoded" name="form1"  onSubmit="return check();">
    <table>
    	<td>Numéro:
       <input type="text" name="NoContenant" size="4" onKeyUp="javascript:couleur(this);" /></td>
      	</tr>
     </table>
    <table border="0">
    <table id="T_INSERT">
    <tr>
    <td>Autre N°:</td>
    <td><input type="text" name="AutreNo[]" size="5"/>
    <td><input name="button" type="button" onClick="Create_Ligne()" value="  +  ">
    </tr>
    </table>
     <input type="submit" name="Submit" value="Envoyer">   
    </form>
    </body>
    </html>
    ERE
    Quand une tête pense seule, elle devient folle.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2009
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2009
    Messages : 30
    Points : 22
    Points
    22
    Par défaut
    Hello,

    Ca c'est ce que j'appelle un joli coup (pas évident d'ailleurs), ta solution semble fonctionner à merveille !

    Un grand M E R C I à toi !

  8. #8
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 418
    Points
    91 418
    Billets dans le blog
    20
    Par défaut
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <table>
    	<td>Numéro:
       <input type="text" name="NoContenant" size="4" onKeyUp="javascript:couleur(this);" /></td>
      	</tr>
     </table>
    Attention, ta table est mal faite, il manque la balise ouvrante <tr>
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Récupérer valeur d'un input text dynamique
    Par Kurapika-shinji dans le forum ASP.NET
    Réponses: 9
    Dernier message: 20/06/2011, 08h16
  2. input text disabled avec apparence readonly
    Par bender86 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 16/01/2011, 00h22
  3. [Mail] texte dynamique avec lien email
    Par bibi28 dans le forum Langage
    Réponses: 5
    Dernier message: 14/12/2008, 18h44
  4. deux tests radio et input text
    Par anis_el_madani dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 18/05/2007, 19h01
  5. Ajouter un URL à un texte dynamique avec ActionScript
    Par deejay2221 dans le forum Flash
    Réponses: 2
    Dernier message: 18/08/2006, 15h35

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