【问题标题】:Initialize jQuery Multiselect using AJAX使用 AJAX 初始化 jQuery 多选
【发布时间】:2016-06-08 04:58:41
【问题描述】:

我对 AJAX 和 JQUERY 有疑问。

我有一个表单,其中包含一个标签。选择一个选项后,我使用 AJAX 生成一个公式,用数据库中的一些数据填充它并显示它。

我想使用jQuery UI MultiSelect Widget

问题是我需要用 jQuery 初始化选择,但是当我在生成新内容的文件中调用这个函数时它不起作用:(如果我不使用 AJAX,它工作得很好)。

<script type="text/javascript">
        $(function(){

            $("#ExampleSelect").multiselect({
                selectedList: 4
            });

        });

</script>

结构如下:

  • PHP 文件的主表单包含一个普通的和一个将包含在 AJAX 调用之后生成的元素。 (&lt;select&gt; 中的 onChange 事件)。
  • Ajax 文件

function LoadDiv()
{

    var xmlhttp;

    var serie_id = document.getElementById('serie_id').value;


    if (window.XMLHttpRequest)
    {// code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp=new XMLHttpRequest();
    }
    else
    {// code for IE6, IE5
        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.onreadystatechange=function()
    {
        if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
            document.getElementById("divForm").innerHTML=xmlhttp.responseText;
        }
    }
    xmlhttp.open("POST","divDataManagement.php",true);
    xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
    xmlhttp.send("serie_id="+serie_id);

}

$.ajax({

         success: function(){
                $("#ExampleSelect").multiselect("destroy").multiselect({
                     selectedList: 4
              });

     }
});
  • 包含 jQuery UI MultiSelect 的 PHP 文件将显示在主 php 表单中(在 &lt;div&gt; 标记内)。

<select id = "ExampleSelect"  multiple>
                        <option value="option1">Option 1</option>
                        <option value="option2">Option 2</option>
                        <option value="option3">Option 3</option>

                </select>

感谢您的帮助。

【问题讨论】:

    标签: php jquery ajax jquery-multiselect


    【解决方案1】:

    在 AJAX 成功方法中初始化它。

    $.ajax({
     ...
     success: function(){
          $("#ExampleSelect").multiselect({
               selectedList: 4
          });
     }
    ...
    

    如果您对选定的多选实例进行更改,请将其销毁并在更改后重新初始化。

    $.ajax({
     ...
     success: function(){
        $("#ExampleSelect").multiselect("destroy").multiselect({
             selectedList: 4
      });
     }
    ...
    

    如果你使用 XMLHttpRequest 而不是 jQuery ajax,你应该在 onreadystatechange 方法中初始化多选。

    xmlhttp.onreadystatechange=function()
    {
         if (xmlhttp.readyState==4 && xmlhttp.status==200)
         {
           document.getElementById("divForm").innerHTML=xmlhttp.responseText;
           $("#ExampleSelect").multiselect({
                 selectedList: 4
           });
         }
    }
    

    【讨论】:

    • 它还不能正常工作。显示选择但不像多选元素。 (与不初始化选择时相同)。根据您的建议,我更新了帖子以添加我的 ajax 代码。
    • 我用 js 文件和包含
    • 哦,我以为您使用 jquery 处理 ajax 请求,我已经为您的案例编辑了答案。
    猜你喜欢
    • 1970-01-01
    • 2015-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多