为什么使用AJAX动态添加选择输入不起作用?

时间:2018-05-17 10:57:42

标签: php ajax codeigniter jquery-select2

我在codeigniter视图中使用Jquery使用像这样的ajax调用获取HTML定义中的表单字段。

     function getaddinfo(){
          var modtabgrp = $("#modtabgrp").val();
             $.ajax({
                url:base_url+"Base/gridaddfetch?modtabgrp="+modtabgrp,
                async:false,
                cache:false,
                success :function(data) {
                $('#liveform').append(data);

              },
          }); 
       }

现在这个响应包含基于select2插件的输入,我能够正确显示所有输入,但是没有启用select2输入。 在添加图标点击时启用基于select2插件的输入的功能就像这样,

      $("#addicon").click(function(){
          $('#stateid').select2('val','2');
          $('#tabgropdropdown').select2('val','1');
        }

此外,我确保在单击#addicon Add按钮之前,表单已加载并注入DOM树内。那么为什么#liveform Div中的#stateid和#tabgropdropdown元素没有被启用?

换句话说,为什么添加按钮事件相关事件没有与动态添加的输入元素绑定?

1 个答案:

答案 0 :(得分:0)

这里你需要在调用ajax之后重新初始化该输入的select2()。

function getaddinfo(){
          var modtabgrp = $("#modtabgrp").val();
             $.ajax({
                url:base_url+"Base/gridaddfetch?modtabgrp="+modtabgrp,
                async:false,
                cache:false,
                success :function(data) {
                $('#liveform').append(data);
                $('#stateid').select2();
                $('#tabgropdropdown').select2();  
              },
          }); 
}