1

我对 AJAX 和 JQUERY 有疑问。

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

我想使用jQuery UI MultiSelect 小部件

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

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

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

        });

</script>

结构如下:

  • PHP 文件的主表单包含一个普通的和一个将包含在 AJAX 调用之后生成的元素。(中的 onChange 事件<select>)。
  • 阿贾克斯文件

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 表单中(在<div>标签内)。

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

                </select>

谢谢你的帮助。

4

1 回答 1

4

在 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
       });
     }
}
于 2015-02-24T13:23:56.280 回答