在Select2中从ajax获取数据中设置默认选择值

时间:2018-01-24 10:45:02

标签: javascript jquery-select2

我使用一些输入字段来过滤结果列表,这个:

Db::table('manual_jobs')->where('id', $manual->id)->update(['path' => $manual->fileupload->getPath()]);

效果很好,但提交表单后,我想用过滤器填充输入,我已经应用了。其他所有投入都可以:

例如:

$("#idCustomer").select2({
      allowClear: true,
      placeholder: "Filter",
      ajax: {
        url: 'ajax/search_customers.php',
        dataType: 'json',
        type: "GET",
        processResults: function (data) {
            return {
                results: $.map(data, function (item) {
                    return {
                        text: item.Name,
                        id: item.ID
                    }
                })
            };
        }
      }
    });

我的page.php

<input id="minRange" name="minRange" value="<?php echo $minRange; ?>">

但我不知道如何使用我使用的搜索自动填充Select2。例如,如果我写“DEM”我的Select2建议我“DEMO CUSTOMER”(ID = 4)。我选择此项,提交表单,重新加载页面后,Select2 if ( isset($_POST) ) { $minRange = $_POST['minRange']; $idCustomer = $_POST['idCustomer']; ... } 仍为空。 我想使用传递给搜索表单的id = 4来对它进行初始化。

我试图追加idCustomer

但它不起作用。

我正在使用最新的4.1版插件

2 个答案:

答案 0 :(得分:0)

你必须提及select for autocomplete

// HTML

// JS

$("#idCustomer").select2({
  allowClear: true,
  placeholder: "Filter",
  ajax: {
    url: 'ajax/search_customers.php',
    dataType: 'json',
    type: "GET",
    processResults: function (data) {
        return {
            results: $.map(data, function (item) {
                return {
                    text: item.Name,
                    id: item.ID
                }
            })
        };
    }
  },
  minLength: 2,
  select: function(event, ui) {

    var Name = ui.item.Name;
    $("#minRange").val(Name);
  }
})

答案 1 :(得分:0)

解决:

<select id="idCustomer" name="idCustomer" class="form-control">
                    <?php if ( $idCustomer != "" ) { ?><option value="<?php echo $idCustomer; ?>"><?php echo get_info_by_id($idCustomer)['Name']; ?></option><?php } ?>
</select>

Select2完成其余的工作!