在互联网的帮助下,我设法创建了一个脚本,根据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">
答案 0 :(得分:0)
UPD。对我来说,问题似乎是由于这个代码
$(".chosen-select").trigger("chosen:updated");
在异步ajax回调之前被调用。在重新分配selectbox的success
后,请尝试将其放在innerHTML
函数中。