2012-10-13 2 views
0

J'ai ce script pour générer trois listes déroulantes et un champ de saisie de texte pour mon formulaire web que je dois soumettre à une base de données en utilisant PHP. Ce formulaire est HTML mais seulement cette partie est javascript pour remplir les champs. J'utilise ce javascript pour générer environ 15 ensembles de ces listes déroulantes et champs de saisie de texte. (1 jeu = 3 listes déroulantes et 1 champ de texte de saisie).Comment puis-je modifier les options dans les listes déroulantes si elles sont générées dynamiquement?

Ma question est la suivante: Si l'utilisateur sélectionne une option dans la première liste déroulante, alors les options dans les deux autres listes déroulantes doivent changer en fonction de l'option sélectionnée dans le premier drodown. Ce que je voulais faire après avoir généré le nombre désiré d'ensembles en sélectionnant le numéro de la liste déroulante dans ce violon, il va générer des ensembles de 3 dropdowns et 1 champ d'entrée de façon dynamique. Par conséquent, si quelqu'un sélectionne l'option 1 dans la première liste déroulante, il doit également modifier les options dans les autres listes déroulantes.

JSFIDDLE

LE SCRIPT:

<script> 
$(function() { 
    $("input[type=button][value=Add]").click(function(e) { 
     for (i = 0; i < document.getElementById('sel').value; i++) { 
      e.preventDefault(); 
      var j = 1; 
      var newDiv = $("<div>").appendTo("#dropbox"); 
      $("<select>").attr("name", "input1_"+j).appendTo(newDiv).append(
      $("<option>").val("0").text("Option 1"), $("<option>").val("1").text("Option 2")); 
      $("<select>").attr("name", "input2_"+j).appendTo(newDiv).append(
      $("<option>").val("0").text("Option 1"), $("<option>").val("1").text("Option 2")); 
      $("<select>").attr("name", "input3_"+j).appendTo(newDiv).append(
      $("<option>").val("0").text("Option 1"), $("<option>").val("1").text("Option 2")); 
      $("<input>").attr("name", "input4_"+j).appendTo(newDiv); 
      $("<button>").text("Remove").appendTo(newDiv).click(function(e) { 
       e.preventDefault(); 
       $(this).parent().remove(); 
      }) 
       j++; 
     } 
    }) 
}) 
</script> 

HTML:

<form> 
    <select id="sel"> 
     <option value="" selected="selected"></option> 
         <option value="01" >01</option> 
         <option value="02" >02</option> 
         <option value="03" >03</option> 
         <option value="04" >04</option> 
         <option value="05" >05</option> 
         <option value="06" >06</option> 
         <option value="07" >07</option> 
         <option value="08" >08</option> 
         <option value="09" >09</option> 
         <option value="10" >10</option> 
         <option value="11" >11</option> 
         <option value="12" >12</option> 
         <option value="13" >13</option> 
         <option value="14" >14</option> 
         <option value="15" >15</option> 
         </select> 
    <input type="button" value="Add" /> 

    <div id="dropbox"></div> 
</form> 
+0

Votre question est vague. Voulez-vous savoir comment réagir sur une sélection d'utilisateur dans la liste déroulante? Voulez-vous modifier et/ou sélectionner une option d'une liste déroulante existante? Est-ce que votre probelm est lié au backend PHP? Qu'avez-vous essayé? –

+0

oui je veux changer les options de la liste déroulante en fonction de la sélection faite dans les listes déroulantes précédentes. Ce que j'ai essayé était de trouver un exemple de travail mais je n'ai pas pu l'utiliser pour moi car mes listes déroulantes sont générées dynamiquement en utilisant un script. – Harsh

Répondre

0

Puisque vous utilisez jQuery, je suggère d'ajouter un événement change à votre menu déroulant. (La page docs jQuery liée contient un exemple complet).

En ce qui concerne le remplissage des 2 autres menus déroulants, vous avez plusieurs options, telles que:

  1. statique: Votre code PHP qui crée la page remplit un tableau javascript avec toutes les options possibles nécessaires selon l'utilisateur choix dans la 1ère liste déroulante. Ensuite, votre code javascript peut utiliser ce tableau chaque fois qu'un événement de changement est déclenché. Dynamique: Si les sous-choix ne peuvent pas être prédits ou chargés au chargement de la page, utilisez une requête jQuery ajax pour demander au serveur des options correspondant au choix de l'utilisateur. Vous pouvez également lire sur le format de données JSon (pris en charge par PHP en utilisant json_encode)

+0

Merci de fournir une solution, mais je suis nouveau à javascript et ne sais vraiment pas comment utiliser votre réponse avec succès pour moi. – Harsh

+0

apprécié mais toujours comme je l'ai dit plus tôt que je suis très nouveau à ce sujet, il va être Rocket Science pour moi de comprendre et de l'utiliser pour moi-même. – Harsh

+0

Non désolé, je peux vous mettre sur la bonne voie, mais je ne peux pas non plus faire le travail pour vous ou écrire un tutoriel complet pour le problème à portée de main. Vous devrez faire plus de recherches sur vous-même. –

0

DEMO

J'ai donné le sel et le bouton d'un ID et changé l'accès dom jQuery

Je l'utilise aussi le « i » et « j » maintenant

En supposant que vous vouliez syncronise les 3 sélectionne, le code pourrait ressembler à ceci

$(function() { 
    $("input[type=button][value=Add]").click(function(e) { 
    e.preventDefault(); 
    for (var i=0,n=$('#sel').val();i<n; i++) { 
     var newDiv = $("<div>").appendTo("#dropbox"); 
     for (var j=0;j<3;j++) { 
     var id = "input"+i+"_"+j; 
     $("<select>") 
      .attr("id",id) 
      .attr("name",id) 
      .on("change",function() { 
      // set all other select's value to this value 
      $(this).siblings("select").val(this.value); 
      }) 
      .append(
      $("<option>").val("0").text("Option 1"), 
      $("<option>").val("1").text("Option 2")) 
      .appendTo(newDiv); 
     } // j 
     $("<input>") 
      .attr("name", "input"+i+"_"+j) 
      .appendTo(newDiv); 
     $("<button>").text("Remove").appendTo(newDiv).click(function(e) { 
     e.preventDefault(); 
     $(this).parent().remove(); 
     }) 
    } // i 
    }) 
})​ 
+0

merci de fournir une solution. mais, le problème est que je suis très nouveau à javascript donc je ne sais vraiment pas comment utiliser votre solution fournie à mon utilisation. Pouvez-vous s'il vous plaît aider en avance sur cela. – Harsh

+0

bien laissez-moi essayer. C'est mon [JSFIDDLE] (http://jsfiddle.net/harshdhama/E3gWX/) ce que je voulais faire après avoir généré le nombre désiré de jeux en sélectionnant le numéro de la liste déroulante dans ce violon, il va générer des ensembles de 3 dropdowns et 1 champ d'entrée dynamiquement. Donc, si quelqu'un sélectionne l'option un dans la première liste déroulante, il devrait aussi changer les options dans les autres listes déroulantes. Faites-moi savoir si vous voulez que je sois plus précis – Harsh

+0

Monsieur, étais-je capable de me rendre clair avec l'aide de ce JSFIDDLE (si vous aviez déjà un coup d'oeil à cela)? – Harsh

Questions connexes