par
AB » 17 mars 2009, 18:22
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...

Ajouter des select à la volée, voilà un petit pb qui m'a pris la tête un moment :
[php]
<!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>[/php]
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 :
[php]
<!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>[/php]
Si quelqu'un a plus simple (tout en utilisant le DOM), ou des commentaires à faire... :wink: