Sha256: 54140535bf1ed02fadca6ec969b0085507aa108652b8c212263e04fe8a0bff1f
Contents?: true
Size: 1.43 KB
Versions: 20
Compression:
Stored size: 1.43 KB
Contents
/*jslint vars: true, browser: true, white: true */ /*global jQuery, IQVOC */ IQVOC.quicksearch = (function($) { "use strict"; var defaults = { minLength: 3, autoFocus: true, source: getConcepts, focus: function(ev, ui) { ev.preventDefault(); }, select: onSelect }; function onSelect(ev, ui) { if(ui.item.value) { $(ev.target).val(ui.item.label); document.location = ui.item.value; } ev.preventDefault(); } function getConcepts(req, callback) { var form = $(this.element).closest("form"); $.ajax({ type: form.attr("method"), url: form.attr("action"), data: form.serialize(), success: function(data, status, xhr) { callback(extractConcepts(data)); } }); } function extractConcepts(html) { // disable scripts (adapted from jQuery's `load`) var rscript = /<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi; var html = html.replace(rscript, ""); var concepts = $("<div />").append(html).find(".concept-items .concept-item"); concepts = concepts.map(function(i, node) { var el = $("a", node); return { value: el.attr("href"), label: $.trim(el.parent().text()).replace(/\s+/, " ") }; }); return concepts.length ? Array.prototype.slice.call(concepts, 0) : [{ value: null, label: "no matches" }]; // TODO: i18n } return function(selector, options) { options = options ? $.extend(defaults, options) : defaults; $(selector).autocomplete(options); }; }(jQuery));
Version data entries
20 entries across 20 versions & 1 rubygems