diff --git a/lib/ajax-chosen.js b/lib/ajax-chosen.js index 96f0f91..c9e3123 100644 --- a/lib/ajax-chosen.js +++ b/lib/ajax-chosen.js @@ -6,11 +6,8 @@ if (settings == null) { settings = {}; } - if (callback == null) { - callback = {}; - } if (chosenOptions == null) { - chosenOptions = function() {}; + chosenOptions = {}; } defaultOptions = { minTermLength: 3, @@ -41,7 +38,7 @@ return false; } field = $(this); - if (!(options.data != null)) { + if (options.data == null) { options.data = {}; } options.data[options.jsonTermKey] = val; @@ -51,7 +48,7 @@ success = options.success; options.success = function(data) { var items, nbItems, selected_values; - if (!(data != null)) { + if (data == null) { return; } selected_values = []; @@ -65,7 +62,7 @@ select.find('optgroup:empty').each(function() { return $(this).remove(); }); - items = callback(data); + items = callback != null ? callback(data, field) : data; nbItems = 0; $.each(items, function(i, element) { var group, text, value; @@ -108,8 +105,8 @@ select.data().chosen.no_results_clear(); select.data().chosen.no_results(field.val()); } - if (success != null) { - success(data); + if (settings.success != null) { + settings.success(data); } return field.val(untrimmed_val); }; diff --git a/lib/ajax-chosen.min.js b/lib/ajax-chosen.min.js index 46861d4..108fa0d 100644 --- a/lib/ajax-chosen.min.js +++ b/lib/ajax-chosen.min.js @@ -1,17 +1,16 @@ (function($){return $.fn.ajaxChosen=function(settings,callback,chosenOptions){var chosenXhr,defaultOptions,options,select;if(settings==null){settings={};} -if(callback==null){callback={};} -if(chosenOptions==null){chosenOptions=function(){};} +if(chosenOptions==null){chosenOptions={};} defaultOptions={minTermLength:3,afterTypeDelay:500,jsonTermKey:"term",keepTypingMsg:"Keep typing...",lookingForMsg:"Looking for"};select=this;chosenXhr=null;options=$.extend({},defaultOptions,$(select).data(),settings);this.chosen(chosenOptions?chosenOptions:{});return this.each(function(){return $(this).next('.chzn-container').find(".search-field > input, .chzn-search > input").bind('keyup',function(){var field,msg,success,untrimmed_val,val;untrimmed_val=$(this).val();val=$.trim($(this).val());msg=val.length");} +success=options.success;options.success=function(data){var items,nbItems,selected_values;if(data==null){return;} +selected_values=[];select.find('option').each(function(){if(!$(this).is(":selected")){return $(this).remove();}else{return selected_values.push($(this).val()+"-"+$(this).text());}});select.find('optgroup:empty').each(function(){return $(this).remove();});items=callback!=null?callback(data,field):data;nbItems=0;$.each(items,function(i,element){var group,text,value;nbItems++;if(element.group){group=select.find("optgroup[label='"+element.text+"']");if(!group.size()){group=$("");} group.attr('label',element.text).appendTo(select);return $.each(element.items,function(i,element){var text,value;if(typeof element==="string"){value=i;text=element;}else{value=element.value;text=element.text;} if($.inArray(value+"-"+text,selected_values)===-1){return $("