Page 1 sur 1

Créer un select avec javascript

Posté : 17 mars 2009, 18:22
par AB
Ajouter des select à la volée, voilà un petit pb qui m'a pris la tête un moment :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Document sans titre</title>
<script type="text/javascript">
<!--
function addDonnee(idChamp) {
   try {
   
      var conteneur = document.getElementById(idChamp);
	  
      var ligne = document.createElement('p');
	  
	  var selection = document.createElement('select');
	  selection.setAttribute('name','nom_du_select[]');
	  
	  var element = document.createElement("option");
	  element.setAttribute('value','Valeur_1');
	  element.text = 'Valeur_1';
	  

//pour IE6 
          //selection.add(element);
//pour FF
	  selection.appendChild(element);


	  ligne.appendChild(selection);
	  
	  conteneur.appendChild(ligne);
   }
   catch(e) {
       alert(e);
    }
}
//-->
</script>

</head>

<body>
	<p onclick="addDonnee('champs_sup')">Ajouter accessoire</p>
	<form id="formulairetest" method="post">
	<div id = "champs_sup"></div>
	<input type = "submit" value = "ok"/>
	</form>
</body>
</html>
Comme indiqué en commentaire, IE6 (qui représente encore actuellement 20% des parts de marché) demande une syntaxe particulière qui n'est pas compatible avec FF


Voici maintenant une syntaxe qui a l'air de passer partout :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Document sans titre</title>
<script type="text/javascript">
<!--
function addDonnee(idChamp) {
   try {
   
      var conteneur = document.getElementById(idChamp);
	  
      var ligne = document.createElement('p');
	  
	  var selection = document.createElement('select');
	  selection.setAttribute('name','nom_du_select[]');
	  
	  var element = document.createElement("option");
	  element.setAttribute('value','Valeur_1');
	  
	  var text = document.createTextNode('Valeur_1'); 
	  element.appendChild(text);
	  
	  selection.appendChild(element);
	  ligne.appendChild(selection);
	  
	  conteneur.appendChild(ligne);
   }
   catch(e) {
       alert(e);
    }
}
//-->
</script>

</head>

<body>
	<p onclick="addDonnee('champs_sup')">Ajouter accessoire</p>
	<form id="formulairetest" method="post">
	<div id = "champs_sup"></div>
	<input type = "submit" value = "ok"/>
	</form>
</body>
</html>
Si quelqu'un a plus simple (tout en utilisant le DOM), ou des commentaires à faire... :wink:

Posté : 24 mars 2009, 02:33
par AB
Je garde ma deuxième solution.

Re: Créer un select avec javascript

Posté : 22 févr. 2010, 18:14
par Totoro
Un grand merci à toi, plusieurs heures de prise de tête d'économisées :)

Re: Créer un select avec javascript

Posté : 22 févr. 2010, 20:36
par AB
:wink: