/** * * @param {type} $ * @returns {undefined} * @author Prayogi */ (function ($) { $.fn.autocomplate_init = function (obj) { var $thisParent = this; var typingTimer; var $start_nama = 0; var ext = $.extend({ doneTypingInterval: 1000, parent_autocomplete_class: '.parent_autocomplete', autocomplete_yogi_class: '.autocomplete_yogi', elementParent: '', list_key: [], list_key_data: [], url: '', otherDataObject: [], onFire: function (e) {} }, obj); function doneTyping() { var $elem_autocomplete = $thisParent; var $nilai_element_autocomplate = $elem_autocomplete.val(); var dataSenderObject = ext.otherDataObject; $.each(dataSenderObject, function (index, value) { if(value == '{this_value}'){ console.log('FIRE THIS VALUE'); dataSenderObject[index] = $nilai_element_autocomplate; } }); dataSenderObject.value_search = $nilai_element_autocomplate; $.autocomplate_form({ list_key: ext.list_key, list_key_data: ext.list_key_data, thisElem: $elem_autocomplete, elementParent: ext.elementParent, url: ext.url, data: dataSenderObject, onFireFunction: function (e) { var callbacks = $.Callbacks(); callbacks.add(ext.onFire); callbacks.fire(e); } }); } $($thisParent).on('keypress', function (e) { if (e.which === 13) { $start_nama = 0; var $target = $(this).parents(ext.parent_autocomplete_class).find(ext.autocomplete_yogi_class); var $valueSelected = $target.find('li.active').html(); var callbacks = $.Callbacks(); callbacks.add(ext.onFire); callbacks.fire($target.find('li.active')); return false; } }); $($thisParent).keyup(function (e) { clearTimeout(typingTimer); var $target = $(this).parents(ext.parent_autocomplete_class).find(ext.autocomplete_yogi_class); var $listItems = $target.find('li'); if ($thisParent.val()) { if (e.keyCode != 40 && e.keyCode != 38) { typingTimer = setTimeout(doneTyping, ext.doneTypingInterval); } else { console.log('Timing'); $($listItems).each(function (index) { $(this).addClass('active_index_' + index); }); var $selected = $listItems.filter('.active'), $current, $total_data = $listItems.length; $listItems.removeClass('active'); if (e.keyCode == 40) { //kebawah $current = $target.find('.active_index_' + $start_nama); $start_nama++; } if (e.keyCode == 38) { //keatas $start_nama--; $current = $target.find('.active_index_' + $start_nama); } if ($start_nama > $total_data) { $start_nama = 0; } if ($start_nama <= 0) { $start_nama = 0; } $current.addClass('active'); } } }); } $.autocomplate_form = function (obj) { var ext = $.extend({ thisElem: null, elementParent: '.parent_autocomplete', list_key: [], list_key_data: [], url: null, method: 'POST', dataType: 'JSON', data: {}, onFireFunction: function (e) { }, onEnterFunction: function (e) { }, beforeSend: function (e) { }, success: function (e) { }, error: function (e) { }, }, obj); $.getting_response_data(ext); } $.getting_response_data = function (obj) { var attr = $.extend({ thisElem: null, elementParent: null, list_key: [], list_key_data: [], url: null, method: 'POST', dataType: 'JSON', data: {}, onFireFunction: function (e) { }, onEnterFunction: function (e) { }, beforeSend: function (e) { }, success: function (e) { }, error: function (e) { }, }, obj); $.ajax({ url: attr.url, method: attr.method, dataType: attr.dataType, data: attr.data, beforeSend: function (e) { var callbacks = $.Callbacks(); callbacks.add(attr.beforeSend); callbacks.fire(e); }, success: function (e) { console.log(e); console.log('Masuk Sini'); $.process_html({ thisElem: attr.thisElem, onFireFunction: attr.onFireFunction, onEnterFunction: attr.onEnterFunction, list_key: attr.list_key, list_key_data: attr.list_key_data, resData: e.response_data, elementParent: attr.elementParent }); var callbacks = $.Callbacks(); callbacks.add(attr.success); callbacks.fire(e); }, error: function (e) { var callbacks = $.Callbacks(); callbacks.add(attr.error); callbacks.fire(e); }, }); } $.process_html = function (obj) { var res = $.extend({ thisElem: null, onFireFunction: function (e) { }, onEnterFunction: function (e) { //magic some how in here }, list_key: [], list_key_data: [], resData: null, elementParent: null }, obj); console.log('Masuk'); console.log(res.resData); var tmp_html = '