java - 在codeigniter中修改时编辑下拉列表

标签 java php codeigniter

救命啊!我有两个下拉列表,其中 comunas 下拉列表取决于 ciudades,它工作完美。当我需要使用保存的数据来修改下拉列表时,问题就出现了。它只会让我带来在城市列表中选择的内容,但在社区中它将无法实现它。

有什么办法可以做到这一点吗?我变得有些困惑。

这是我的代码!

<!-- language: lang-or-tag-here -->
THIS IS THE VIEW CODE

 <label>Ciudad:</label><select id="idciudad" name="idciudad" required autocomplete="off">
                <option value="0">Seleccione</option>
                <?php foreach($listaciudades as $ciudad):?>

        <option value="<?= $ciudad['idciudad']?>"
            <?php if ($idciudad == $ciudad['idciudad']) : ?> selected<?php endif; ?>
        >
            <?= $ciudad['nombre']?>
        </option>
    <?php endforeach; ?>
</select>

           <label>Comuna:</label> <select id="idcomuna" name="idcomuna">
                <option value="0">Comuna</option>
            </select>




        <script type="text/javascript">   
            $(document).ready(function() {                       
                $("#idciudad").change(function() {
                    $("#idciudad option:selected").each(function() {
                        idciudad = $('#idciudad').val();
                        $.post("<?php echo base_url(); ?>index.php/clientes/fillCiudades", {
                            idciudad : idciudad
                        }, function(data) {
                            $("#idcomuna").html(data);
                        });
                    });
                });
            });
        </script>  

这是 Controller 代码

 public function fillCiudades() {
    $idciudad = $this->input->post('idciudad');

    if($idciudad){
        $this->load->model('ClientesModel');
        $comuna = $this->ClientesModel->getCiudades($idciudad);
        echo '<option value="0">Comunas</option>';
        foreach($comuna as $fila){
            echo '<option value="'. $fila->idcomuna .'">'. $fila->nombre .'</option>';
        }
    }  else {
        echo '<option value="0">Comunas</option>';
    }
}

最佳答案

首先,您需要使用保存的 idcomuna 从 Controller 解析变量到 View ,就像处理保存的 idciudad 一样。为此,您必须编辑加载 View 的函数的代码(您没有将其包含在您的问题中)。

类似于(此代码仅供引用):

public function thefunctionthatloadstheview($idcliente) {
    // The rest of your code here...

    // I supposed you get the client data from database using a model, something like this...
    $this->load->model('ClientesModel');
    $cliente = $this->ClientesModel->getCliente($idcliente);

    $your_view_data = array(
        'idciudad' => $cliente->idciudad,
        'idcomuna' => $cliente->idcomuna,
        // The rest of the data like $listaciudades, etc...
    );

    $this->load->view('your_view', $your_view_data);
}

像解析 $idciudad 一样解析 $idcomuna 后,您必须在 View 和 fillCiudades 函数中进行另外两项更改。

第二个下拉列表中的项目仅在第一个下拉列表发生更改时加载。要使其在页面加载时加载,请修改 Javascript:

<script type="text/javascript">
    // Create a function to make POST request, parsing the value of the first dropdown (ciudades) and the saved value of idcomuna...
    function fillCiudades_js() {
        $.post("<?php echo base_url(); ?>index.php/clientes/fillCiudades", {
            idciudad: $('#idciudad').val(),
            idcomuna: <?php echo $idcomuna; ?>
        }, function(data) {
            $("#idcomuna").html(data);
        });
    }

    $(document).ready(function() {
        // Make a request when the page is ready...
        fillCiudades_js();

        // Make a request while the first dropdown changes...
        $("#idciudad").on("change", fillCiudades_js());
    });
</script>

然后,修改fillCiudades函数,获取通过Javascript代码解析的idcomuna值:

public function fillCiudades() {
    $idciudad = $this->input->post('idciudad');
    $idcomuna = $this->input->post('idcomuna');

    if ($idciudad) {
        $this->load->model('ClientesModel');
        $comuna = $this->ClientesModel->getCiudades($idciudad);
        echo '<option value="0">Comunas</option>';
        foreach ($comuna as $fila) {
            echo '<option value="'. $fila->idcomuna .'"' . ($idcomuna == $fila->idcomuna ? 'selected' : '') . '>'. $fila->nombre .'</option>';
        }
    } else {
        echo '<option value="0">Comunas</option>';
    }
}

完成这些更改后,第二个下拉列表应加载默认选择的已保存值。

附注我无法测试代码,因此可能存在一些小错误......但我希望它有所帮助!

关于java - 在codeigniter中修改时编辑下拉列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57367971/

相关文章:

php - 如何将 Apache Solr 与 mysql 连接

php - 如何保护我的输入类型免受 firebug 和其他调试工具的影响

validation - codeigniter + 需要密码中的字母和数字

php - CodeIgniter:$this->load->database() 出错;

java - 关于 AsyncTask 中 Java 泛型的问题

java - 如何用Java从SharePoint Server下载和上传文件?

Java 泛型 : Comparing an Integer to a Double

java - Android Studio 使用变量访问翻译后的字符串

php - 获取错误 W3 Total Cache(版本 0.9.2.4)

php - 如何重定向到设置为不活动的选项卡式页面