jQuery(document).ready(function($) { $('#research-area').select2({ minimumInputLength: 3, placeholder: 'Enter a term', multiple: true, create: true, ajax: { url: "https://fast.oclc.org/searchfast/fastsuggest", dataType: 'jsonp', quietMillis: 100, data: function(term, page) { return { queryIndex: "suggest50", rows: 10, suggest: "autoSubject", queryReturn: "idroot,auth,type,suggest50", query: term }; }, results: function(data, page) { if (data.response.numFound === 0) { return [{}]; } else { return { results: prepResult(data.response.docs) }; } } }, initSelection: function(element, callback) { var label = $(element).data('value'); var uri = $(element).data('object'); var data = [{ id: uri, text: label }]; callback(data); //callback({"term": $(elment).data('value')}); }, createSearchChoice: function(item, data) { return; }, dropdownCssClass: "bigdrop", tokenSeparators: [",", "|"] }); $('#research-area').select2('data', getInitialData() || []); $('#research-area').on("change", function(e) { var subject = $(this).parent().data('subject'); var changeSet = {}; changeSet.subject = subject; changeSet.predicate = $(this).data('predicate'); if (e.added !== undefined) { changeSet.object = fastURI(e.added.id); console.debug("Add"); console.debug(changeSet); logChange(changeSet, 'added'); } if (e.removed !== undefined) { changeSet.object = fastURI(e.removed.id); console.debug("Remove"); console.debug(changeSet); logChange(changeSet, 'removed'); } }); }); function prepResult(docs) { return _.map(docs, function(d) { return { 'id': d.idroot, 'text': d.suggest50[0] }; }); } function fastURI(fstId) { return 'http://id.worldcat.org/fast/' + fstId.replace(/fst0+/, ''); } function logChange(changeSet, action) { $('#output table').append('<tr><td>' + changeSet.subject + '</td><td>' + changeSet.predicate + '</td><td>' + changeSet.object + '</td><td>' + action + '</td></tr>'); } //This would be replaced by a query in a real situation. function getInitialData() { id = '932231'; return [{ 'text': 'Forests and forestry', 'id': id }]; } //http://fast.oclc.org/searchfast/fastsuggest?&query=[query]&queryIndex=[queryIndex]&queryReturn=[queryReturn]&suggest=autosuggest&rows=[numRows]&callback=[callbackFunction]