在编辑模式php中设置依赖下拉列表的值

时间:2018-12-16 08:47:52

标签: php html ajax html-select

我在Web应用程序中具有以下从属下拉列表。这用于将项目保存在POS系统中。项目类别取决于所选公司。我正在根据公司列表的更改事件填充类别列表。创建项目时可以,因为类别是根据所选公司填充的。

    <select name="company" id="company" class="form-control" required="required">
    <option value="">- Select Company -</option>
    <?php
    $datavalues = new dataValues();
    if(isset($user_company[0]['id'])) $datavalues->id = $user_company[0]['id'];
    $datavalues->status=1;
    $datavalues->order="name ASC";
    $data = $company_class->get_companies($datavalues);
    if(isset($data['result']) && $data['result']==true){
        foreach($data['result'] as $company){
            echo '<option value="'.$company['id'].'">'.$company['name'].'</option>';
        }
    }
    ?>
    </select>


    <select name="category" id="category" class="form-control" required="required">
        <option value="">- Select Category -</option>
    </select>

这是用html填充类别的ajax查询

    $('#company').change(function(){
        var company_id = $('#company').val();
        if(company_id.length>0 && company_id!='' && company_id!=null){
            // Get Categories
            $.ajax({
                url : "ajax/categories/get_select_categories.php",
                cache: false,
                type: 'POST',  
                data: { 'company_id':company_id },                  
                success : function(data) {
                    $('#addItem #category').html(data);
                },
                error: function(data) {
                    console.log("Failed to get category list for select ! " + data);
                }
            });
        }
    });

现在,当我要编辑提交的记录时,我会将保存的数据传递回html表单并设置选定的值。下面是对此的ajax查询。

    function editItem(id) {
        $.ajax({
        url : "ajax/items/edit_item.php",
        cache: false,
        data: {'id':id},
        type: 'POST',                  
        success : function(data) {
            var arr = data.split("|");
            if(arr[0]=="success") {
                $('#addItem #edit_id').val(id);
                $('#addItem #company').val(arr[1]).change();
                var category = arr[5];

                // Get Categories
                $.ajax({
                    url : "ajax/categories/get_select_categories.php",
                    cache: false,
                    type: 'POST',  
                    data: { 'company_id':company_id },                  
                    success : function(data) {
                        $('#addItem #category').html(data);
                        $('#addItem #category').val(category).change();
                    },
                    error: function(data) {
                        console.log("Failed to get category list for select ! " + data);
                    }
                });

            }
            else {
                $('#errorMessage').html(arr[0]);
                $('#errorModal').modal();
            }
        },
        error: function(data) {
            $('#errorMessage').html("Internal problem detected, Please try again later !");
            $('#errorModal').modal();
        }
       });
    }

问题是,当我为公司设置值时,它会在公司列表的更改事件中触发功能。因此,然后根据公司列表的设置值对类别进行加载。因此,我无法设置类别列表的保存值。 (我不知道一种检测类别列表填充时间的结束时间的方法,如果我知道,可以在此之后设置所选类别)

这容易吗?还是我做错了什么?

0 个答案:

没有答案