Ruby on rails 选择2“查找现有”或键入“新建”“始终将第一个选项显示为空”

Ruby on rails 选择2“查找现有”或键入“新建”“始终将第一个选项显示为空”,ruby-on-rails,ruby,ruby-on-rails-4,jquery-select2,select2-rails,Ruby On Rails,Ruby,Ruby On Rails 4,Jquery Select2,Select2 Rails,我添加了一个select2,它总是将第一个选项显示为空白。 在空白选项下面,它总是显示我在StReT2文本字段中键入的内容。任何想法,我怎么能解决它 =隐藏字段标记:标记//以HAML形式显示 // javascript $('#tags').select2 createSearchChoice: (term, data) -> if $(data).filter((-> @text.localeCompare(term) == 0 )).length =

我添加了一个select2,它总是将第一个选项显示为空白。 在空白选项下面,它总是显示我在StReT2文本字段中键入的内容。任何想法,我怎么能解决它

=隐藏字段标记:标记//以HAML形式显示

// javascript 
$('#tags').select2
createSearchChoice: (term, data) ->
  if $(data).filter((->
      @text.localeCompare(term) == 0
    )).length == 0
    return {
      id: term
      text: term
    }
  return
multiple: false
data: [
  {
    id: 0
    text: 'story'
  }
  {
    id: 1
    text: 'bug'
  }
  {
    id: 2
    text: 'task'
  }`enter code here`
]
试试这个

您的输入字段应该如下所示

%input#tags{:style => "width: 300px", :type => "hidden"}
$("#tags").select2({
  placeholder:"Select an option",  
  createSearchChoice: function(term, data) {
    if ($(data).filter((function() {
      return this.text.localeCompare(term) === 0;
    })).length === 0) {
      return {
        id: term,
        text: term
      };
    }
  },
  multiple: false,
  data: [
    {
      id: 0,
      text: 'story'
    }, {
      id: 1,
      text: 'bug'
    }, {
      id: 2,
      text: 'task'
    }
  ]
});
您的js代码应该是这样的

%input#tags{:style => "width: 300px", :type => "hidden"}
$("#tags").select2({
  placeholder:"Select an option",  
  createSearchChoice: function(term, data) {
    if ($(data).filter((function() {
      return this.text.localeCompare(term) === 0;
    })).length === 0) {
      return {
        id: term,
        text: term
      };
    }
  },
  multiple: false,
  data: [
    {
      id: 0,
      text: 'story'
    }, {
      id: 1,
      text: 'bug'
    }, {
      id: 2,
      text: 'task'
    }
  ]
});

您不再需要使用
createSearchChoice
如果要使用Select2执行此操作,只需使用
tags
选项即可。现在,你不应该看到空白选项,因为你根本没有传递给Stutt2,所以这是缺少一点可以解释这个问题的信息。

选择2将自动隐藏空白选项,但如果您有占位符集,我总是建议您这样做。因此,黑客解决方案是将
占位符
选项设置为您想要的任何选项(“选择一些标记…”),但只有当这实际上是一个空白选项而不仅仅是CSS问题时,这才有效。当您开始搜索时,如果选择2将其高亮显示,您可以判断它是否为空选项,因为它将自动高亮显示第一个选项

这是一个CSS问题,可能有点太多的填充,因为标签(或
createSearchChoice
中的选项)应该自动插入到搜索结果的顶部。因此,即使有一个备用的空白选项,它也会显示在新创建的搜索选项下