select2 initSelection 用于重新显示表单

Posted

技术标签:

【中文标题】select2 initSelection 用于重新显示表单【英文标题】:select2 initSelection for redisplayed the form 【发布时间】:2017-07-08 06:06:00 【问题描述】:

我正在使用 Select2-rails '3.5.3,我可以使用远程数据进行搜索并保存它,问题是如何恢复选定的文本(例如,如果用户按下编辑),问题:initSelection 不是当表单加载编辑时触发

下面是我的代码

hotelcheck.coffee

  $('.select2-autocomplete').each (i, e) ->
  select = $(e)
  options =  
    multiple: false
    width: "98%"
    placeholder: "Type Hotel name"
    minimumInputLength: 3
  
  options.ajax =
    url: select.data('source')
    dataType: 'json'
    type: "GET"
    quietMillis: 250
    # input untuk program
    data: (term, page) ->
       q: term, 
      page: page,
      per: 25 
    results: (data) ->
       results: $.map(data, (item) ->
        
          text: item.name
          id: item.id
        
      ) 
    initSelection: (element, callback) ->
      id = $(element).val()
      if id != ''
        $.ajax('/hotels/' + id + '.json', dataType: 'json').done (data) ->
          selected = 
            id: element.val()
            text: data.name
          callback selected
          return
      return
  options.dropdownCssClass = 'bigdrop'
  select.select2 options

表格显示隐藏字段,我将内容保存到hotel_id

<%= f.hidden_field :hotel_id, data:  source: search_name_hotels_path , class: "select2-autocomplete", :value => "#f.object.hotel_id unless f.object.new_record? || f.object.hotel_id.nil? " %>

ajax 的酒店控制器发送值

def show
  @hotel = Hotel.find(params[:id])
  puts "running fill name"

  respond_to do |format|
    format.json  render json: @hotel 
  end
end
源数据 = 带有字段 ID、名称的酒店表 客户表 = 带有字段 hotel_id 的订单

【问题讨论】:

【参考方案1】:

从this page 看来,initSelection 不应该在 options.ajax 中,而应该在 options 中。我会尝试复制他们的示例并根据您的需要进行编辑。或者更新到4.0.0,这似乎更容易。

【讨论】:

是的,你说得对,我刚刚将 initselection 移到选项下,它的工作,非常感谢

以上是关于select2 initSelection 用于重新显示表单的主要内容,如果未能解决你的问题,请参考以下文章

Select2 initSelection 元素 Val

在select2 jquery插件中没有调用initSelection

保留 InitSelection -Select2

jquery Select2 Ajax - 如何设置值(initSelection)

select2 ajax:定义 formatResult、formatSelection 和 initSelection 角色和行为

使用远程数据正确使用 jQuery select2 的 initSelection 回调