app/assets/javascripts/suggest.js
(function() {
"use strict";
App.Suggest = {
initialize: function() {
$("[data-js-suggest-result]").each(function() {
var $this, callback, timer;
$this = $(this);
callback = function() {
var js_suggest_selector, locale;
js_suggest_selector = $this.data("js-suggest");
if (js_suggest_selector.startsWith(".")) {
locale = $this.closest(".translatable-fields").data("locale");
js_suggest_selector += "[data-locale=" + locale + "]";
}
$.ajax({
url: $this.data("js-url"),
data: {
search: $this.val()
},
type: "GET",
dataType: "html",
beforeSend: function() {
$(js_suggest_selector).removeClass("suggest-success").addClass("suggest-loading");
},
success: function(stHtml) {
$(js_suggest_selector).html(stHtml);
$(js_suggest_selector).removeClass("suggest-loading").addClass("suggest-success");
}
});
};
timer = null;
$this.on("keyup", function() {
window.clearTimeout(timer);
timer = window.setTimeout(callback, 1000);
});
$this.on("change", callback);
});
}
};
}).call(this);