Как проверить зависимость раскрывающегося списка, используя библиотеку проверки формы codeigniter? - PullRequest
0 голосов
/ 22 января 2019

Я хочу попробовать зависимую выпадающую проверку с использованием библиотеки проверки формы CodeIgniter. Вот некоторая проблема, когда я выбираю штат, после чего в раскрывающемся списке отображается округ, но возникает проблема. Если я нажму кнопку отправки (после перезагрузки страницы), тогда штат сохранит свое значение, но район не может содержать значение округа. Как решить эту проблему. Заранее спасибо.


Контроллер

<?php
class Dependent extends CI_Controller
{
    public function index()
    {
        $this->load->library("form_validation");

        if(isset($_POST["submit"]) == "Submit")
        {
            $this->form_validation->set_rules("state","State","required");
            $this->form_validation->set_rules("district","District","required");
            $this->form_validation->set_rules("name","Name","required");
            if($this->form_validation->run())
            {
                //success
            }
        }

        $this->load->model("Dependents");
        $data["state"] = $this->Dependents->get_state();
        $this->load->view("drop",$data);
    }
    public function district()
    {
        $this->load->library("form_validation");
        $this->load->model("Dependents");

        $id = $_POST["id"];
        $district = $this->Dependents->get_district($id);
        $output = "";
        $output .= "<option value=''>Select District</option>";
        foreach($district as $row)
        {
            $output .= "<option value='".$row["id"]."'>".$row["district"]."</option>";
        }
        echo $output;
    }
}
?>

Модель

<?php
class Dependents extends CI_Model
{
    public function get_state()
    {
        return $this->db->get("tbl_state")->result_array();
    }
    public function get_district($id)
    {
        return $this->db->where("state",$id)->get("tbl_district")->result_array();
    }
}
?>

View

<?php
    echo validation_errors();
?>

<form method="post" action="">
    <div class="form-group">
        <select class="form-control" id="state" name="state">
            <option value="">Select State</option>
            <?php
                foreach ($state as $row) {
                ?>
            <option value="<?php echo $row["id"]; ?>"<?php echo set_select("state", $row["id"]); ?>><?php echo $row["state"]; ?></option>
            <?php
                }
            ?>
        </select>
    </div>
    <div class="form-group">
        <select class="form-control" id="district" name=district>
            <option value="">Select District</option>
        </select>
    </div>
    <div class="form-group">
        <input type="text" name="name" placeholder="Enter Name" class="form-control">
    </div>
    <div class="form-group">
        <input type="submit" name="submit" value="Submit" class="btn btn-success btn-sm">
    </div>
</form>
<script type="text/javascript">
    $(function(){
    $("#state").change(function(){
        var id = $(this).val();

        $.ajax({
            url: "<?php echo base_url() . "Dependent/district"; ?>",
            type: "POST",
            data:{id: id},
            success: function(data)
            {
            $("#district").html(data);
            }
        });
    });
    });
</script>

Ответы [ 2 ]

0 голосов
/ 24 января 2019

Раскрывающийся список районов не содержит своего значения, поскольку он заполнен ajax и не может использовать set_select (); Вы можете добавить опцию в выпадающий список, только если установлено set_value ('district').

0 голосов
/ 22 января 2019

Попробуйте изменить name=district на name="district":

<select class="form-control" id="district" name="district">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...