Page 1 sur 2

Ajout dynamique champs select

Posté : 09 nov. 2013, 01:08
par orell1
Bonsoir à tous,

je souhaiterai ajouter dynamiquement des champs <option> (liste déroulante) en cliquant sur un lien..

J'ai essayé ça :
<script>
function create_champ(i) {

var i2 = i + 1;

document.getElementById('leschamps_'+i).innerHTML = ' <select name="fichier_'+i+'"></span>';
document.getElementById('leschamps_'+i).innerHTML += (i <= 10) ? '<br /><span id="leschamps_'+i2+'"><a href="javascript:create_champ('+i2+')">Ajouter un champs</a></span>' : '';


}
</script>

<select name="ligne_service_1" id="leschamps_4">
      <option value="<?php echo stripslashes($aff_donnee_client['civilite_ent']);?>"><?php echo stripslashes($aff_donnee_client['civilite_ent']);?></option>
      <option value="Madame">Assistance Technique (R&eacute;gie)</option>
      <option value="Monsieur">Infog&eacute;rance</option>
      <option value="Monsieur">PCS</option>
      <option value="Monsieur">H&eacute;bergement</option>
      <option value="Monsieur">Int&eacute;gration CPEP</option>
      <option value="Monsieur">Int&eacute;gration Projet R&eacute;seau</option>
      <option value="Monsieur">Int&eacute;gration Projet Syst&egrave;me</option>
      <option value="Monsieur">Assistance MOA</option>
      <option value="Monsieur">Négoce</option>
      <option value="Monsieur">Renouvellement Maintenance</option>
    </select>
<span id="leschamps_4"><a href="javascript:create_champ(4)">Ajouter un champs</a></span>
Mais cela ne fonctionne pas...
Pouvez-vous m'aider?

Merci beaucoup.

Re: Ajout dynamique champs select

Posté : 09 nov. 2013, 13:45
par sirakawa
Un bout de solution à adapter:
<script>
 function create_champ() {
//la fonction est effectivemlent appelée
 var i = 1;

 //document.getElementById('leschamps_'+i).innerHTML = ' <select name="fichier_'+i+'"></span>';
 //document.getElementById('leschamps_'+i).innerHTML += (i <= 10) ? '

document.write(i);

 }
</script>

<select name="ligne_service_1" id="leschamps_4">
       <option value="Madame">Assistance Technique (R&eacute;gie)</option>
       <option value="Monsieur">Infog&eacute;rance</option>
       <option value="Monsieur">PCS</option>
       <option value="Monsieur">H&eacute;bergement</option>
       <option value="Monsieur">Int&eacute;gration CPEP</option>
       <option value="Monsieur">Int&eacute;gration Projet R&eacute;seau</option>
       <option value="Monsieur">Int&eacute;gration Projet Syst&egrave;me</option>
       <option value="Monsieur">Assistance MOA</option>
       <option value="Monsieur">Négoce</option>
       <option value="Monsieur">Renouvellement Maintenance</option>
     </select> 
     
     
 <!-- Sens de :  <span id="leschamps_'+i2+'">?-->    
     <br />
//  l'événement onclick d'un bouton fonctionne correctement
 <button onclick ="create_champ()"> Ajouter un champ</button></p>

Re: Ajout dynamique champs select

Posté : 09 nov. 2013, 20:02
par franckm
Perso j'aurais fait un truc comme ça (avec Jquery activé bien sûr):
[javascript]
function addOption(){
$('#leschamps_4').append('<option value="foo">Foo</option>');
}
[/javascript]
<select name="ligne_service_1" id="leschamps_4">
       <option value="Madame">Assistance Technique (R&eacute;gie)</option>
       <option value="Monsieur">Infog&eacute;rance</option>
       <option value="Monsieur">PCS</option>
       <option value="Monsieur">H&eacute;bergement</option>
       <option value="Monsieur">Int&eacute;gration CPEP</option>
       <option value="Monsieur">Int&eacute;gration Projet R&eacute;seau</option>
       <option value="Monsieur">Int&eacute;gration Projet Syst&egrave;me</option>
       <option value="Monsieur">Assistance MOA</option>
       <option value="Monsieur">Négoce</option>
       <option value="Monsieur">Renouvellement Maintenance</option>
</select>

<br /><button onclick ="addOption()"> Ajouter un champ</button>
Cela rajoute un champs Option comme tu l'as demandé. Par contre, enregardant ton script, j'ai l'impression que tu veux rajouter un select à chaque fois et pas un option ?

Re: Ajout dynamique champs select

Posté : 09 nov. 2013, 22:55
par orell1
Merci beaucoup pour vos réponses!
En effet je souhaite ajouter un champs supplémentaire à chaque fois que je clique sur le lien et avec l'option de paramétrer le nombre maximum d'ajout...

Merci par avance ;-)

Re: Ajout dynamique champs select

Posté : 10 nov. 2013, 00:09
par orell1
je viens d'essayer les 2 scripts et malheureusement, ils ne fonctionnent pas... :-(

Merci quand même.

Re: Ajout dynamique champs select

Posté : 10 nov. 2013, 09:15
par sirakawa
Ce que j'ai envoyé fonctionne parfaitement : je l'ai testé avant de le poster.
Que ça ne fasse pas ce que tu,veux, c'est autre chose...
Il faut d'abord être certain que le script est activé et onctionnel.

Re: Ajout dynamique champs select

Posté : 10 nov. 2013, 09:20
par franckm
Le code que je t'ai donné doit fonctionner pour peu que jquery soit appelé.

Si tu veux un trux dynamique tu peux faire ça côté javascript:
function addOption(){
var index = $('#leschamps_4 option').length + 1;
$('#leschamps_4').append('<option value="example' + index + '" selected="selected">Option #' + index + '</option>');
}

Re: Ajout dynamique champs select

Posté : 10 nov. 2013, 11:41
par orell1
Mdr! En fait je n'ai pas active jquerry ! Car je ne sais pas trop comment faire...
Je vais chercher.

Merci,beaucoup pour ton aide

Re: Ajout dynamique champs select

Posté : 10 nov. 2013, 12:03
par franckm
Insères ça dans le balise <head> de ton HTML:
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
et ça devrait suffire

Re: Ajout dynamique champs select

Posté : 10 nov. 2013, 18:49
par orell1
Merci.
Je viens d'essayer mais lorsque je clique sur le bouton rien ne se passe... :-(

Re: Ajout dynamique champs select

Posté : 10 nov. 2013, 18:52
par orell1
Par contre lorsque j'utilise ça :
[javascript]function addOption(){
var index = $('#leschamps_4 option').length + 1;
$('#leschamps_4').append('<option value="example' + index + '" selected="selected">Option #' + index + '</option>');
}[/javascript]

Les champs ne s'ajoute pas mais Option # s'ajoute directement dans la liste déroulante...
On y est presque...

Merci pour ton aide

Re: Ajout dynamique champs select

Posté : 10 nov. 2013, 19:25
par franckm
Ben oui il ajoute dans l texte de l'option Option # + le numéro de l'option. Mais il y a bien un champs <option></option> HTML qui s'est inséré. Je viens de tester exactement ce code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<title>Document sans nom</title>
</head>

<body>

<select name="ligne_service_1" id="leschamps_4">
       <option value="Madame">Assistance Technique (R&eacute;gie)</option>
       <option value="Monsieur">Infog&eacute;rance</option>
       <option value="Monsieur">PCS</option>
       <option value="Monsieur">H&eacute;bergement</option>
       <option value="Monsieur">Int&eacute;gration CPEP</option>
       <option value="Monsieur">Int&eacute;gration Projet R&eacute;seau</option>
       <option value="Monsieur">Int&eacute;gration Projet Syst&egrave;me</option>
       <option value="Monsieur">Assistance MOA</option>
       <option value="Monsieur">Négoce</option>
       <option value="Monsieur">Renouvellement Maintenance</option>
</select>

<br /><button onclick ="addOption()"> Ajouter un champ</button>

<script>
	function addOption(){
		var index = $('#leschamps_4 option').length + 1;
		$('#leschamps_4').append('<option value="example' + index + '" selected="selected">Option #' + index + '</option>');
	}
</script>

</body>
</html>

Et il marche exactement comme tu le demandes, à savoir rajouter une option au clic. Après, ce que tu veux mettre dans ton option (value, title, text) ça c'est autre chose.

Re: Ajout dynamique champs select

Posté : 10 nov. 2013, 19:32
par orell1
oui oui exact...
Moi ce que je voulais faire c'est lorsque je clique sur le bouton, cela ajoute un select entier...
Exemple:

Je clique sur le bouton :
<br /><button onclick ="addOption()"> Ajouter un champ</button>
Cela créé:
<select name="ligne_service_1" id="leschamps_4">
       <option value="Madame">Assistance Technique (R&eacute;gie)</option>
       <option value="Monsieur">Infog&eacute;rance</option>
       <option value="Monsieur">PCS</option>
       <option value="Monsieur">H&eacute;bergement</option>
       <option value="Monsieur">Int&eacute;gration CPEP</option>
       <option value="Monsieur">Int&eacute;gration Projet R&eacute;seau</option>
       <option value="Monsieur">Int&eacute;gration Projet Syst&egrave;me</option>
       <option value="Monsieur">Assistance MOA</option>
       <option value="Monsieur">Négoce</option>
       <option value="Monsieur">Renouvellement Maintenance</option>
</select>
je clique une nouvelle fois sur :
<br /><button onclick ="addOption()"> Ajouter un champ</button>
cela créé:
<select name="ligne_service_1" id="leschamps_4">
       <option value="Madame">Assistance Technique (R&eacute;gie)</option>
       <option value="Monsieur">Infog&eacute;rance</option>
       <option value="Monsieur">PCS</option>
       <option value="Monsieur">H&eacute;bergement</option>
       <option value="Monsieur">Int&eacute;gration CPEP</option>
       <option value="Monsieur">Int&eacute;gration Projet R&eacute;seau</option>
       <option value="Monsieur">Int&eacute;gration Projet Syst&egrave;me</option>
       <option value="Monsieur">Assistance MOA</option>
       <option value="Monsieur">Négoce</option>
       <option value="Monsieur">Renouvellement Maintenance</option>
</select>
Et ainsi de suite, jusqu'à 5 ajouts maximum (mais peut être paramétrable)...

tu vois le truc ?
On ajoute pas que <option> mais <select>+<option>

Merci.

Re: Ajout dynamique champs select

Posté : 10 nov. 2013, 19:50
par franckm
Quand on pose une question sur un forum, on essaie déjà de la poser correctement, ça évite de perdre du temps pour rien. Ton premier post:
je souhaiterai ajouter dynamiquement des champs <option> (liste déroulante) en cliquant sur un lien..
Pour moi ,ta question, c'est ajouter des champs option, pas un select... Bref, voici un code qui fonctionne comme tu veux:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<title>Document sans nom</title>
</head>

<style>
	.mesSelects{
		margin-top:10px;
	}
</style>

<body>

<!--La DIV principale où on va ajouter les select -->
<div id="div_entiere">
   
    <!--Le select qu'on veut copier à chaque fois -->
    <div id="select_1" class="mesSelects">
        <select name="ligne_service_1" id="leschamps_4">
               <option value="Madame">Assistance Technique (R&eacute;gie)</option>
               <option value="Monsieur">Infog&eacute;rance</option>
               <option value="Monsieur">PCS</option>
               <option value="Monsieur">H&eacute;bergement</option>
               <option value="Monsieur">Int&eacute;gration CPEP</option>
               <option value="Monsieur">Int&eacute;gration Projet R&eacute;seau</option>
               <option value="Monsieur">Int&eacute;gration Projet Syst&egrave;me</option>
               <option value="Monsieur">Assistance MOA</option>
               <option value="Monsieur">Négoce</option>
               <option value="Monsieur">Renouvellement Maintenance</option>
        </select>
	</div>
    
</div>

<!--Le bouton d'appel au javascript -->
<br /><button onclick ="addSelect()"> Ajouter une Liste</button>

<script>
	NbreDiapos = 1;
	function addSelect(){
		NbreDiapos = NbreDiapos + 1;
		var selectACopier = $('#select_1').html();
		$('#div_entiere').append('<div id="select_'+NbreDiapos+'" class="mesSelects">'+selectACopier+'</div>');
	}
</script>

</body>
</html>


Re: Ajout dynamique champs select

Posté : 10 nov. 2013, 19:58
par orell1
Désolé, effectivement je me suis mal exprimé!
c'est exactement ç! Merci et BRAVO!

Par contre sais-tu comment brider le nombre de <select> à créer ?
Par exemple on ne peut créer que 5 select et dès que le nombre est atteint, le bouton disparait...

Merci encore 1000 fois!