Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/02/2012, 13h44   #1
Invité régulier
 
Inscription : juin 2008
Messages : 45
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 45
Points : 8
Points : 8
Par défaut changement de label et attributs dynamiquement

Bonjour à tou(te)s,

Je suis en train d'essayer de réaliser un système permettant de mettre à jour une page (interface admin).
Je ne suis qu'à la conception d'un html propre via javascript.

Je rencontre un problème et je me casse les dents dessus depuis pas mal de temps sans trouver de solutions.

J'aimerais pouvoir ajouter et supprimer des champs (input) par pression sur boutons.

Tout marche comme je le souhaite mais sachant que j'attribue un nombre à chaque champs, lorsque j'en supprime un autre que le dernier, les nombres ne se suivent plus... (nombre utilisé pour les attributs : for, id, name ainsi que pour le label du champ)

Comment pourrais-je faire pour que tout les nombres des champs après celui supprimé se décrementent de 1 ?

Voici mon code :

Code :
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
 
<script type="text/javascript">
 	var nbr_carac=1;
 	//var caract_tab = new Array();
 
	function fAddCarac() {
 
		if(nbr_carac<20){
			nbr_carac+=1;
 
			var contenu = document.getElementById('cible').innerHTML;
 
			var contenu_Add = '<li><label for="carac_'+nbr_carac+'">Caractéristique '+nbr_carac+' </label><input type="text" id="carac_'+nbr_carac+'" name="carac_'+nbr_carac+'"/><input type="button" value="Suppression" onclick="del_Carac(this)" /></li>';
 
			//caract_tab.push(contenu_Add);
 
			contenu = contenu+contenu_Add;
 
		        document.getElementById('cible').innerHTML = contenu;
		}
		if(nbr_carac==20){
		        document.getElementById('add_carac').style.display="none";
		}
	}
 
 
 
	function del_Carac(id){
		nbr_carac-=1;
		var parent=id.parentNode;
		parent.parentNode.removeChild(parent);
	}
</script>
Code :
1
2
3
4
5
6
7
8
9
10
 
<ul>				
	<li>Les caractéristiques
	<ul id="cible">
		<li><label for="carac_1">Caractéristique 1</label>
					<input type="text" id="carac_1" name="carac_1"/></li>
	</ul>
	<input id="add_carac" type="button" value="Ajout caractéristique" onclick="fAddCarac()" />
	</li>				
</ul>
Merci pour votre aide.
doncho23 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2012, 15h41   #2
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 994
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 994
Points : 5 787
Points : 5 787
Envoyer un message via Skype™ à jreaux62
Bonjour,
voici une façon de faire, avec jQuery/JavaScript :
Code html :
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
<!-- Script initialisation jquery -->
<script type="text/javascript" src="http://code.jquery.com/jquery.js"></script>
<script type="text/javascript">
 	var nbr_carac = 1; /* initialisation */
 	var nbr_carac_max = 5; /* nombre maxi */
	$(document).ready(function(){
		/* ajout d'une caractéristique */
		$('#add_carac').click(function(){
			nbr_carac += 1;
			if(nbr_carac<=nbr_carac_max){
				var contenu_Add = '';
				contenu_Add += '<li><label for="carac_'+nbr_carac+'">Caractéristique '+nbr_carac+' </label>';
				contenu_Add += '<input type="text" id="carac_'+nbr_carac+'" name="carac_'+nbr_carac+'"/>';
				contenu_Add += '<input type="button" value="Suppression" onclick="del_Carac(this);"/></li>';
				   $('#cible').append(contenu_Add);
			}
			if(nbr_carac>=nbr_carac_max){
				   $('#add_carac').css('display','none');
			}
		});
	});
	/* suppression d'une caractéristique */
	function del_Carac(id){
		nbr_carac -= 1;
		/* suppression du li concerné */
		var parent = id.parentNode;
		parent.parentNode.removeChild(parent);
		/* renumerotation des li */
		var num_li = 1;
		$('#cible').find('li').each(function(){
			$(this).find('label').attr('for','carac_'+num_li).html('Caractéristique '+num_li);
			$(this).find('input:first').attr('id','carac_'+num_li).attr('name','carac_'+num_li);
			num_li++;
		});
		if(nbr_carac<nbr_carac_max){
			$('#add_carac').css('display','block');
		}
	}
</script>
Code html :
1
2
3
4
5
6
7
8
<ul>
	<li>Les caractéristiques
	<ul id="cible">
		<li><label for="carac_1">Caractéristique 1</label><input type="text" id="carac_1" name="carac_1"/></li>
	</ul>
	<input id="add_carac" type="button" value="Ajout caractéristique" />
	</li>
</ul>
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/02/2012, 14h21   #3
Invité régulier
 
Inscription : juin 2008
Messages : 45
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 45
Points : 8
Points : 8
Parfait.
Sujet résolu.

Merci beaucoup à toi et bonne journée.
doncho23 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h32.


 
 
 
 
Partenaires

Hébergement Web