drmwndr

Autocomplete Materialize - Refatorar

Oct 20th, 2020
947
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #html
  2. <div class="input-field col s12 l5">
  3.      <i class="material-icons prefix">search</i>
  4.     <%= form.text_field :cidades, class: "autocomplete", tabindex: 15 %>
  5.     <%= form.label :cidades, "Cidade" %>
  6.     <%= form.hidden_field :cidade_id %>
  7.   </div>
  8. </div>
  9.  
  10. #javascript
  11.     function delay(callback, ms) {
  12.         var timer = 0;
  13.         return function () {
  14.             var context = this, args = arguments;
  15.             clearTimeout(timer);
  16.             timer = setTimeout(function () {
  17.                 callback.apply(context, args);
  18.             }, ms || 0);
  19.         };
  20.     }
  21.  
  22.  
  23.     $(document).ready(function () {
  24.         var res = {};
  25.         $('#nfe_destinatario_cidades').autocomplete({
  26.             data: res,
  27.             minLenght: 3,
  28.             onAutocomplete: function () {
  29.                 $.getJSON('<%= auto_completes_busca_cidade_id_url %>', {termo: $('#nfe_destinatario_cidades').val()}, function (data) {
  30.                     var arr = data;
  31.                     for (var i = 0; i < arr.length; i++) {
  32.                         alert(arr[i].id);
  33.                         $('#nfe_destinatario_cidade_id').val(arr[i].id);
  34.                     }
  35.                 });
  36.  
  37.             }
  38.         });
  39.  
  40.         $('#nfe_destinatario_cidades').keyup(delay(function () {
  41.             $.getJSON('<%= auto_completes_cidade_estado_pais_path %>', {termo: $('#nfe_destinatario_cidades').val()}, function (data) {
  42.                 var arr = data;
  43.                 for (var i = 0; i < arr.length; i++) {
  44.                     res[arr[i].name] = null;
  45.                 }
  46.                 $('#nfe_destinatario_cidades').autocomplete('updateData', res);
  47.  
  48.             });
  49.  
  50.         }, 600));
  51.     });
  52.  
  53.    
  54.   #Controller Para busca dos dados
  55.    def cidade_estado_pais
  56.     lista = { id: nil, label: nil, name: nil }
  57.     if params[:termo]
  58.       @cidades = Geo::Cidade.busca(params[:termo]).limit(6)
  59.       lista = @cidades.map { |c|  {:id => c.id, :label => c.nome, :name => c.cidade_uf_pais}
  60.       }
  61.     end
  62.     render json: lista
  63.   end
  64.  
  65.   def busca_cidade_id
  66.     lista = { id: nil,  name: nil }
  67.     if params[:termo]
  68.       @cidades = Geo::Cidade.busca_autocomplete(params[:termo]).limit(1)
  69.       lista = @cidades.map { |c|  {:id => c.id, :name => c.nome}
  70.       }
  71.     end
  72.     render json: lista
  73.   end
  74.    
  75.    
RAW Paste Data