如何在codeigniter,jTable中创建两个相关的自动完成字段?

时间:2017-03-02 12:08:53

标签: javascript php jquery codeigniter jtable

我希望我的capital_city自动填充字段仅显示与country_name等效的country_id的选项。因此,从country_name autocomplete字段获取id并仅显示具有相同id的选项。对不起,我的英语不好。我希望你能得到我想要的东西。

这是我的观点.php:

<div class="JtableCrud">
<div class="filtering">
    <form class="searchbox_1">
        Country Name: <input type="text" class="search_1" name="country_name" id="country_name" />
        City Name: <input type="text" class="search_1" name="capital_city" id="capital_city" />
        Date from <input class="search_1" type="date" name="from_date" id="from_date"/>
        Date to <input class="search_1" type="date" value = "<?php echo date('Y-m-d')?>"  name="to_date" id="to_date"/>
        <center><button  class="submit_1" type="submit" id="LoadRecordsButton">Search</button>
            <input class ="submit_1" type="reset" value="Clear fields!"></center>

    </form>
</div>
<div id="countryTable"></div>
<script type="text/javascript">

    $(document).ready(function () {

        //Prepare jTable
        $('#countryTable').jtable({
        title: 'Country\'s',
                paging: true,
                pageSize: 10,
                sorting: true,
                defaultSorting: 'country_name ASC',
                selecting: true,
                multiselect: true,
                selectingCheckboxes: true,
                selectOnRowClick: true,
                actions: {
                        listAction:   'get_country',
                        createAction: 'create_country',
                        updateAction: 'update_country',
                        deleteAction: 'delete_country'
                },
                fields: {
                    country_id: {
                    key: true,
                        list: false
                    },
                        country_name: {
                        title: 'Country Name',
                        width: '11%'
                        },
                        country_code: {
                        title: 'Country Code',
                        width: '11%'
                        },
                        surface_area: {
                        title: 'Surface Area (m<sup>2</sup>)',
                        width: '13%'
                        },
                        continent_name: {
                        title: 'Continent Name'
                        },
                        continent: {
                        title: 'Continent Code',
                        width: '12%'
                        },
                        population: {
                        title: 'Population'
                        },
                        capital_city: {
                        title: 'Capital City'
                        },
                        record_date: {
                        title: 'Record Date',
                                type: 'date',
                                displayFormat: 'mm/dd/yy',
                                create: false,
                                edit: false,
                                sorting: false
                        }
                },


                $('#country_name').autocomplete({
                    source: 'list_country',
                    minLength: 0,
                    scroll: true,
                    autoFocus: true
                }).focus(function() {
                $(this).autocomplete("search", "")
                        .autocomplete( "widget" )
                        .addClass( "country_field" );
            });

             $('#capital_city').autocomplete({
                source: 'list_city',
                minLength: 0,
                scroll: true,
                autoFocus: true
            }).focus(function() {
                $(this).autocomplete("search", "")
                        .autocomplete( "widget" )
                        .addClass( "country_field" );
            });

        $('#LoadRecordsButton').click(function (e) {
            e.preventDefault();
            $('#countryTable').jtable('load', {
                country_name: $('#country_name').val(),
                capital_city: $('#capital_city').val(),
                from_date: $('#from_date').val(),
                to_date: $('#to_date').val()
            });

        });

        $('#LoadRecordsButton').click();

    });

</script>
</div>

这是我的model.php:

public function get_country_name() {

    $searchTerm = filter_input(INPUT_GET, 'term');

    $query = $this->db->query("SELECT DISTINCT country_name FROM country "
  . "WHERE deleted=0 AND country_name LIKE '" . $searchTerm . "%' ORDER BY country_name ASC");
    $row = array();
    foreach ($query->result_array() as $ro) {
        $row[] = $ro['country_name'];
    }
    echo json_encode($row);
}
public function get_city_name() {

    $searchTerm = filter_input(INPUT_GET, 'term');

    $query = $this->db->query("SELECT DISTINCT capital_city FROM country "
  . "WHERE deleted=0 AND capital_city LIKE '" . $searchTerm . "%' ORDER BY capital_city ASC");
    $row = array();
    foreach ($query->result_array() as $ro) {
        $row[] = $ro['capital_city'];
    }
    echo json_encode($row);

}

这是我的controller.php:

 public function list_country(){

    $this->load->model('Country_model');
    $this->Country_model->get_country_name();

}    

public function list_city(){

    $this->load->model('Country_model');
    $this->Country_model->get_city_name();

}

我一直在寻找解决方案的日子。请帮我。 :-)。

0 个答案:

没有答案