代码之家  ›  专栏  ›  技术社区  ›  Will

将初始数据集与Select2一起使用,并且仅在用户键入字符时发送Ajax搜索

  •  0
  • Will  · 技术社区  · 7 年前

    我有一个选择框。

       <%= f.select :key_pole_id,
          @span.decorate.key_poles_to_search,
          {:include_blank => true},
          class: 'key-pole-search' %>
    

    我这样初始化:

      $('.key-pole-search').select2({
        theme: "bootstrap",        
        ajax: {
          url: '/key_poles/search',
          dataType: 'json',
          delay: 250,      
        }
      });
    

    除了设置的初始值永远不会显示外,该选项有效。当用户点击Select2搜索框时,会触发一个ajax请求,其中包含一个空的搜索词,该搜索词会用其他极点重新填充列表。

    我希望在用户输入至少3个字符之前不要发送ajax请求,如果用户输入了字符并且在初始选项中没有找到匹配项,则最好不要发送。

    2 回复  |  直到 7 年前
        1
  •  1
  •   Vaibhav Chauhan    7 年前
    You can find an example of what you are looking for 
    http://jsfiddle.net/tw57m8bx/1/
    
        function(options) {
            if (options.term) {
                $.ajax({
                    type: 'post',
                    url: '/echo/json/',
                    dataType: 'json',
                    data: {
                        json: JSON.stringify(AJAX_OPTIONS),
                        delay: 0.3
                    }
    
        2
  •  1
  •   Vaibhav Chauhan    7 年前

    您还可以扩展和适配器,并使用它来实现所需的功能, 这更有效,并允许您加载默认选项

    https://gist.github.com/govorov/274a8aac5fb910472ff1d0022f32f53e