选择的选择框太晚了一步

时间:2015-09-01 21:08:44

标签: jquery

在互联网的帮助下,我设法创建了一个脚本,根据selectbox1中的人选择刷新selectbox2。问题是selectbox2太晚了一步。

我会尝试解释一下: 当我选择伦敦时,我想在selectbox2中查看伦敦的学校,但selectbox2没有任何反应。然后我选择曼彻斯特,而选择框2显示伦敦的所有学校。

function fetch_select(val)
{
   $.ajax({
     type: 'post',
     url: 'test_fetch_data.php',
     data: {
       get_option:val
     },
     success: function (response) {
       document.getElementById("wijk").innerHTML=response; 
     }


   }
   );

$(".chosen-select").chosen().change( function() {
  var selectedValue = $(this).find('option:selected').val();
    console.log(selectedValue);
  $(".chosen-select").find('option[value="'+ selectedValue +'"]:not(:selected)').attr('disabled','disabled');
  $(".chosen-select").trigger("chosen:updated");
});

}

如果我不使用所选择的课程,一切正常,所以我猜这个问题不在javascript中。

提前致谢。

test_fetch_data.php:

   if(isset($_POST['get_option']))
{

 $state = $_POST['get_option'];
 $find=mysql_query("select wijk from geografie_wijken where plaats='$state'");
 while($row=mysql_fetch_array($find))
 {
   echo "<option>".$row['wijk']."</option>";
 }

 exit;
  }

选择部分:

<select class="chosen-select chosen-select-deselect" name="plaats" id="plaats" onChange="fetch_select(this.value);">  
     <option value=""></option>  


         $select=mysql_query("select DISTINCT(plaats) from geografie_wijken");
         while($row=mysql_fetch_array($select))
         {
          echo "<option>".$row['plaats']."</option>";
         }


     </select>

  <select name="wijk" id="wijk" data-placeholder="Selecteer uw keuze(s)..."  multiple="multiple" class="chosen-select">

1 个答案:

答案 0 :(得分:0)

UPD。对我来说,问题似乎是由于这个代码

$(".chosen-select").trigger("chosen:updated");

在异步ajax回调之前被调用。在重新分配selectbox的success后,请尝试将其放在innerHTML函数中。