使用两个选择控件编辑表单,以便在首次启动时进行筛选


Edit form with two select controls to be filtered when first launched

我有一个包含两个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
});