簡體   English   中英

在Codeigniter中修改時的編輯下拉列表

[英]Edit drop--down list when modifying in codeigniter

救命! 我有兩個下拉列表,其中comunas下拉列表依賴於ciudades,它的工作原理非常完美。 當我需要將下拉列表與保存的數據一起修改時,問題就來了。 它只會讓我帶來在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>  

這是控制器代碼

 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>';
    }
}

首先,您需要像使用已保存的idciudad一樣,將具有已保存的idcomuna的變量從控制器解析到視圖。 為此,您必須編輯加載視圖的函數的代碼(您未在問題中包括它)。

就像這樣( 此代碼僅供參考 ):

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 之后 ,必須在視圖和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>';
    }
}

進行了這些更改后,第二個下拉列表應加載默認情況下選擇的保存值。

PS我無法測試代碼,因此可能存在一些小錯誤...但是我希望它能對您有所幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM