11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

J'ai besoin de creer un formulaire dynamique. Mais j'ai un peu de mal à parvenir à ce que je désire faire.
J'ai un formulaire dans lequel j'aimerais dupliquer un fieldset.

Voilà ce à quoi je suis parvenu en regardant ici et là mais ce n'est pas ce que je désire obtenir.


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<title></title>
<script type="text/javascript">
window.onload = dfieldsetInit;
function dfieldsetInit() {
	var lesFieldsets = document.getElementsByTagName('FIELDSET');
	for ( var i = 0; j < lesFieldsets.length; j++ ) {
		if (lesFieldsets[j].className = 'aCloner' ) {
			var leFieldset = lesFieldsets[j];
			var newFieldset = leFieldset.cloneNode(true);
			//leFieldset.style.display = 'none';
			//leFieldset.appendChild(newFieldset); //fait planter le navigateur
		}
		
	}
}

/* trouve le tag "parentTagName" parent de "element" */
function getParent(element, parentTagName) {
	if ( ! element )
		return null;
	else if ( element.nodeType == 1 && element.tagName.toLowerCase() == parentTagName.toLowerCase() )
		return element;
	else
		return getParent(element.parentNode, parentTagName);
}

function addFieldset(link) {
	var fieldset = getParent(link,'FIELDSET');
	//on recupere le fieldset a cloner pour l'ajouter
	var newFieldset = fieldset.cloneNode(true);
	fieldset.appendChild(newFieldset);
}
</script>
</head>
<body>
	<form action="#" method="post">
	<fieldset>
		<legend>test</legend>
		<fieldset class="aCloner">
			<legend>aCloner dans le fieldset 'test'</legend>
			<label>label</label>
			<input type="text" name="champ1[]" />
		</fieldset>
		<a href="#" onclick="addFieldset(this); return false;">Ajouter un fieldset</a>
	</fieldset>
	
	</form>
</body>
</html>


merci
Modifié par ChBoc (01 Mar 2006 - 17:09)
Si tu veux parler de cette instruction :
//leFieldset.appendChild(newFieldset); //fait planter le navigateur

Ca me fait furieusement penser à une boucle infinie...
En fait l'erreur qu'il y a à mon avis, c'est que tu clones un fieldset pour le placer dans ce même fieldset. Essaie voir ce que ça donne si tu le place ailleurs, genre sur une div.
Oui mais en fait mon formulaire ne contient aucun div et je voudrais le faire avec des fieldsets.

Alors comment récuperer le fieldset ayant pour class aCloner?

merci
ChBoc a écrit :
Oui mais en fait mon formulaire ne contient aucun div et je voudrais le faire avec des fieldsets.

Alors comment récuperer le fieldset ayant pour class aCloner?

merci

Bonjour,
tu as oublié le == dans la condition Smiley cligne
Modifié par chmel (02 Mar 2006 - 23:51)