Skip to content

Instantly share code, notes, and snippets.

@sethrylan
Created June 4, 2013 15:23
Show Gist options
  • Save sethrylan/5706769 to your computer and use it in GitHub Desktop.
Save sethrylan/5706769 to your computer and use it in GitHub Desktop.
JQuery CSV Autocomplete
/* Symptoms */
// shuttlebox : http://blog.jeremymartin.name/2008/02/easy-multi-select-transfer-with-jquery.html
// another shuttlebox : http://stackoverflow.com/questions/4255946/dynamic-shuttlebox-implementation-using-javascript
function split(val) {
return val.split(/,\s*/);
}
function extractLast(term) {
return split(term).pop();
}
$("#symptoms")
// don't navigate away from the field on tab when selecting an item
.bind("keydown", function (event) {
if (event.keyCode === $.ui.keyCode.TAB &&
$(this).data("ui-autocomplete").menu.active) {
event.preventDefault();
}
})
.autocomplete({
minLength: 1,
source: function (request, response) {
$.getJSON(viprDemoURL + "/search/symptoms", {
term: extractLast(request.term)
}, response);
},
search: function () {
// custom minLength
var term = extractLast(this.value);
if (term.length < 2) {
return false;
}
},
focus: function () {
// prevent value inserted on focus
return false;
},
select: function (event, ui) {
var terms = split(this.value);
// remove the current input
terms.pop();
// add the selected item
terms.push(ui.item.value);
// add placeholder to get the comma-and-space at the end
terms.push("");
this.value = terms.join(", ");
symptomsList.push({
"reference": ui.item.id
});
console.log("Added symptom " + ui.item.id + "; symptoms are " + JSON.stringify(symptomsList));
return false;
}
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment