如何使用jquery创建MultiLevel Dynamic下拉列表

时间:2014-07-28 11:19:05

标签: c# jquery html asp.net-mvc

我正在尝试创建多级下拉。

我的默认下拉列表中包含值

实施例。家长下拉列表ID =' ddl1'

如果我们从中选择值,则从服务器加载数据并选择并创建新的下拉列表作为子下拉列表,然后再次从子项中选择值并从服务器加载数据,如果存在数据则创建子下拉列表。

我们必须创建drowpdown,直到n级。

'实施例。我创建如下'

function createdropdown(id) {

 var labelHtml = "<tr id='trFormType" + id + "' class='trFormType'><td><label class='tdLabel'>" + labelFormType + " * </label></td>";
 labelHtml += "<td><select class='ddlFormType' id='ddlFormType" + id + "' name='ddlFormType" + id + "'  >";
    labelHtml  += "<option value=''";
    labelHtml += ">" + labelSelect + "</option>";
    labelHtml += "</select></td></tr>";

    return labelHtml;
}

var selectedId =&#39;&#39 ;; $(&#34; .ddlFormType&#34;)。live(&#34; click&#34;,function(){selectedId =&#34;#&#34; + $(this).prop(&#39 ; id&#39;);});

$(selectedId).live(&#34;更改&#34;,function(){$ .ajax({url:Url +&#39;方法/&#39; +(selectedId).val() ,键入:&#39; GET&#39;,dataType:&#39; json&#39;,cache:false,timeout:9000,success:function(data){$(&#34; #detailTable tbody&#34; ).append(createdropdown(currentId));} });

&#39;但是.change事件不会被触发,对于dyncamically创建的下拉列表&#39;

&#39;希望你能理解?&#39;

2 个答案:

答案 0 :(得分:0)

要创建n级下拉列表,您需要在ajax回调中创建一个下拉列表,如下所示:

 $.ajax({
    url: "Your URL",
    method: "GET",
    dataType: 'json',
    success: function (data) {
       $("Your Dropdown Conatiner").append("<select><option name="option1" value="1"></option>...</select>");
    },
    error: function (data) {

    }
});

答案 1 :(得分:0)

它认为你的问题是你在DOM完全加载并且jQuery已经注册了所有事件之后创建了select。

如果你想添加dinamically N选择你应该包含一个调用,在你要添加到DOM的代码中注册它,检查这个样本:

  <div id="select-container"></div>

  <script>
    function CreateSelect(id){
        return `<select id="ddl` + id +  `">
                    <option value="Opcion">Opcion<\/option>
                    <option value="Opcion2">Opcion 2<\/option>
                <\/select>
                <script>
                    RegisterSelectChangeEvent(` + id + `);
                <\/script>`;
    }

    function RegisterSelectChangeEvent(id){
      console.log("Event Raised");
      $("#ddl" + id).on("change", function (e) {
          jQuery("#select-container").append(CreateSelect(id+1));
      });
    }

    (function(){
         jQuery("#select-container").append(CreateSelect(1));
    })();
  </script>

你可以看到它在这里工作:

https://codepen.io/anon/pen/LQRqYY