如何使用带有ajax的多选过滤器

时间:2014-03-31 12:35:37

标签: javascript php jquery html ajax

大家好我已经从这个源http://www.erichynds.com/下载了多选过滤器,我试图将它与Ajax一起使用,虽然我的ajax函数正在工作,并显示由window.alert(html)中的php生成的html,但是multiselect fileter没有效果,我真的不知道如何解决它。这就是我到目前为止所做的事情

HTML

 <table>
  <tr>
  <td>
  <select id='pr_select' name='prj' onChange='show("pr_select","output1");' >
      <option value='28'>28</option>
      <option value='29'>29</option>
      <option value='30'>30</option>
  </select>
  </td>
  </tr>
  <tr>
  <td>
  <div id='output1'></div></td>
  </tr>
  </table>

JAVASCRIPT

<script>

  function show(sel,id) {

    var selected = $("#"+sel).val();  
    $("#"+id).html( "" );

    if (selected.length > 0 ) { 

     $.ajax({
            type: "GET",
            url: "get_data.php",
            data: "select="+selected,
            cache: false,
            beforeSend: function () { 
                $("#"+id).html('<img src="loader.gif" alt="" width="24" height="24">');
            },
            success: function(html) { 
                // Ajax is success but multiselect is not working.....   
                window.alert(html),
                $("#"+id).html( html );

            }

        });
    } 

  }

  $(document).ready(function(){
     $("#test").multiselect();
  });

  </script>

在ajax成功阻止中生成的输出 - window.alert

  <select id='test' name='multiple_data[]' multiple='multiple'>
  <option value='USA'>USA</option>
  <option value='UK'>UK</option>
  </select>

我甚至试过output1分裂,这样也没有运气

 $(document).ready(function(){
     $("#output1").multiselect();
  });

2 个答案:

答案 0 :(得分:1)

尽量不要在doc ready上绑定方法,而是应用于ajax的complete方法:

<script>

  function show(sel,id) {

    var selected = $("#"+sel).val();  
    $("#"+id).html( "" );

    if (selected.length > 0 ) { 

     $.ajax({
        .......
            success: function(html) { 
                // Ajax is success but multiselect is not working.....   
                window.alert(html),
                $("#"+id).html( html );

            },
            complete:function(){
                   $("#test").multiselect(); // add it here in the ajax
            }

        });
    } 

  }
  </script>

答案 1 :(得分:1)

这可以解决您的问题尝试

success: function(html){    
        document.getElementById(id).innerHTML = html;
        $("#"+id).multiselect().multiselect('refresh').multiselectfilter();
      },