(function ($) { // http://davidwalsh.name/javascript-debounce-function function debounce(func, wait, immediate) { var timeout; return function () { var context = this, args = arguments; var later = function () { timeout = null; if (!immediate) func.apply(context, args); }; var callNow = immediate && !timeout; clearTimeout(timeout); timeout = setTimeout(later, wait); if (callNow) func.apply(context, args); }; }; /*______________________________________________________*/ $(function () { $('#test').html(mm.display_name); console.log(mm); $("#cardloading").attr('src', mm.loading); $("#loading90").attr('src', mm.loading); $("#done").attr('src', mm.done); init_clientname_input("#username"); }); function clientname_suggestions(){ return new Bloodhound({ datumTokenizer: Bloodhound.tokenizers.obj.whitespace('name'), queryTokenizer: Bloodhound.tokenizers.whitespace, remote: { url: mm.ajax_url + '?' + jQuery.param({ _ajax_nonce: mm.nonce, // nonce action: "search_users", // action pattern: "QUERY", // search pattern }), wildcard: 'QUERY' // %QUERY will be replace by users input in }, // the url option. }); } function onUpdateClientID (e, suggestion) { console.log(suggestion); console.log(e); } function init_clientname_input(selector){ //console.log('selector = ' + selector); // init Typeahead jQuery(selector).typeahead( { minLength: 0, highlight: true, hint:false, }, { name: 'clientnames', source: clientname_suggestions(), // suggestion engine is passed as the source display: function(item) { // display: 'name' will also work //console.log('display' + item.userid); return item.username; }, limit: 5, templates: { suggestion: function(item) { //console.log(item); return '