我有一个包含两个Select控件的编辑表单。
它们都是从远程数据库中填充的。
第一个显示一个国家的州,第二个应该显示在第一个选择控件中选择的州的城市。
如果我在第一个控件中更改状态,则第二个控件将被过滤,并且只允许从所选状态中选择城市。
这种情况已经解决了,而且效果良好。每次我在第一个控件更改状态时,第二个控件都会更改,并且只显示所选状态中的城市。
我的问题是,这是一个"编辑"表单,显示的州和城市是记录中的当前值。
如果我想更改城市,第二个控件会显示数据库中的所有城市,而不仅仅是第一个控件中状态值中的城市。
当表单第一次加载时,我不知道如何过滤第二个控件,它首先显示当前城市值,但该控件允许选择其他所有城市,而不仅仅是当前状态值中的城市。
这是我的代码:
第一控制,状态:
<div class="form-group">
<label for="comunidad_enclave" class="col-sm-2 control-label">Comunidad Autónoma</label>
<div class="col-sm-10">
<select name="comunidad_enclave" onChange="getCities(this.value)">
<?php
do {
?>
<option value="<?php echo $row_RSComunidades['id_comunidad']?>" <?php if (!(strcmp($row_RSComunidades['id_comunidad'], htmlentities($row_Recordset1['comunidad_enclave'], ENT_COMPAT, 'UTF-8')))) {echo "SELECTED";} ?>><?php echo $row_RSComunidades['nombre_comunidad']?></option>
<?php
} while ($row_RSComunidades = mysql_fetch_assoc($RSComunidades));
?>
</select>
</div>
</div>
第二控制,城市:
<div class="form-group">
<label for="provincia_enclave" class="col-sm-2 control-label">Provincia</label>
<div class="col-sm-10">
<select name="provincia_enclave" id="cities-list">
<?php
do {
?>
<option value="<?php echo $row_RSProvincias['id_provincia']?>" <?php if (!(strcmp($row_RSProvincias['id_provincia'], htmlentities($row_Recordset1['provincia_enclave'], ENT_COMPAT, 'UTF-8')))) {echo "SELECTED";} ?>><?php echo $row_RSProvincias['nombre_provincia']?></option>
<?php
} while ($row_RSProvincias = mysql_fetch_assoc($RSProvincias));
?>
</select>
</div>
</div>
调用PHP文件刷新第二个控件的JavaScript:
<script>
function getCities(val) {
$.ajax({
type: "POST",
url: "get_contacts_po.php",
data:'client_id='+val,
success: function(data){
$("#cities-list").html(data);
}
});
}
</script>
欢迎任何帮助。非常感谢。
如果我是你,我只需更改我在生成编辑表单时的查询,以将城市列表限制在所选状态,但如果你不想或不知道如何做到这一点,你可以简单地触发状态选择的更改功能,使您的城市过滤器在加载文档时选择。。。这是它的js代码。。。
$( document ).ready(function(){
$("#comunidad_enclave").trigger('change'); //this triggers change event of comunidad_enclave select so that it will fire getCities function
});