jojacafe
8/11/2017 - 6:45 AM

Autocomplete custom array json filter

Autocomplete custom array json filter

$( function() {
  var autocomplete = (function() {
    var json;

    $.ajax({
      url: "/autocomplete",
      dataType: 'json',
      type: 'post',
      data: {searchString: ''},
      success: function(data) {
        json = data;          
      }
    });

    return {getJson : function()
    {
        if (json) return json;
        // else show some error that it isn't loaded yet;
    }};
  })();
});

var data = [];
var arrayFilter = [];
data = autocomplete.getJson();

$.grep(data, function(el, i) {
  var cleanString = (function(s) {
    var r=s.toLowerCase();
    r = r.replace(new RegExp("\\s", 'g'),"");
    r = r.replace(new RegExp("[àáâãäå]", 'g'),"a");
    r = r.replace(new RegExp("æ", 'g'),"ae");
    r = r.replace(new RegExp("ç", 'g'),"c");
    r = r.replace(new RegExp("[èéêë]", 'g'),"e");
    r = r.replace(new RegExp("[ìíîï]", 'g'),"i");
    r = r.replace(new RegExp("ñ", 'g'),"n");                            
    r = r.replace(new RegExp("[òóôõö]", 'g'),"o");
    r = r.replace(new RegExp("œ", 'g'),"oe");
    r = r.replace(new RegExp("[ùúûü]", 'g'),"u");
    r = r.replace(new RegExp("[ýÿ]", 'g'),"y");
    r = r.replace(new RegExp("\\W", 'g'),"");
    return r;
  });

  var reg = new RegExp(request.term, 'i');
  if (cleanString(el.Name).match(reg)) {
    arrayFilter.push(el);
  }
});

response(arrayFilter);