diff --git a/lib/ajax-chosen.js b/lib/ajax-chosen.js index c3d1843..5f8e354 100644 --- a/lib/ajax-chosen.js +++ b/lib/ajax-chosen.js @@ -1,9 +1,11 @@ - /* - ajax-chosen - A complement to the jQuery library Chosen that adds ajax autocomplete - https://github.com/bicouy0/ajax-chosen - */ +/* +ajax-chosen +A complement to the jQuery library Chosen that adds ajax autocomplete +https://github.com/bicouy0/ajax-chosen +*/ + +(function() { (function($) { return $.fn.ajaxChosen = function(options, callback) { @@ -27,8 +29,8 @@ select = this; this.chosen(defaultedOptions.chosenOptions); return this.next('.chzn-container').find(inputSelector).bind('keyup', function(e) { - var search; - var _this = this; + var search, + _this = this; if (this.previousSearch) clearTimeout(this.previousSearch); search = function() { var clearSearchingLabel, currentOptions, field, prevVal, response, val, _ref; @@ -69,6 +71,9 @@ var $currentOpt, newOption, presenceInNewOptions; $currentOpt = $(currentOpt); if ($currentOpt.attr('selected') && multiple) return; + if ($currentOpt.attr('value') === '' && $currentOpt.html() === '' && !multiple) { + return; + } presenceInNewOptions = (function() { var _j, _len2, _results; _results = []; @@ -130,3 +135,5 @@ }); }; })(jQuery); + +}).call(this); diff --git a/lib/ajax-chosen.min.js b/lib/ajax-chosen.min.js index 35a39c0..57cc0e0 100644 --- a/lib/ajax-chosen.min.js +++ b/lib/ajax-chosen.min.js @@ -1,4 +1,4 @@ -(function(a){return a.fn.ajaxChosen=function(y,z){var b,v,u,i;b={minLength:3,queryLimit:10,delay:100,chosenOptions:{},searchingText:"Searching...",noresultsText:"No results."};a.extend(b,y);b.chosenOptions.no_results_text=b.searchingText;v=(u=this.attr("multiple")!=null)?".search-field > input":".chzn-search > input";i=this;this.chosen(b.chosenOptions);return this.next(".chzn-container").find(v).bind("keyup",function(){var w=this;this.previousSearch&&clearTimeout(this.previousSearch);return this.previousSearch= -setTimeout(function(){var q,j,d,r,m;d=a(w);m=a.trim(d.attr("value"));r=(q=d.data("prevVal"))!=null?q:"";d.data("prevVal",m);q=function(){return(u?d.parent().parent().siblings():d.parent().parent()).find(".no-results").html(b.noresultsText+" '"+a(w).attr("value")+"'")};if(m.length");c.attr("value",o).html(f);return n.push(a(c))});g=function(o){var f,c;f=a(o);if(!(f.attr("selected")&&u))if(function(){var k,l,p;p=[];k=0;for(l=n.length;k");g.addClass("no-results");g.html(b.noresultsText+" '"+e+"'").attr("value","");i.append(g)}else i.change();i.trigger("liszt:updated");a(".no-results").removeClass("active-result");d.val(e);if(!a.isEmptyObject(s)){e=a.Event("keydown");e.which=40;d.trigger(e)}if(x)return x(s)}})},b.delay)})}})(jQuery); +(function(){(function(a){return a.fn.ajaxChosen=function(y,z){var b,v,r,i;b={minLength:3,queryLimit:10,delay:100,chosenOptions:{},searchingText:"Searching...",noresultsText:"No results."};a.extend(b,y);b.chosenOptions.no_results_text=b.searchingText;v=(r=this.attr("multiple")!=null)?".search-field > input":".chzn-search > input";i=this;this.chosen(b.chosenOptions);return this.next(".chzn-container").find(v).bind("keyup",function(){var w=this;this.previousSearch&&clearTimeout(this.previousSearch); +return this.previousSearch=setTimeout(function(){var q,j,e,s,m;e=a(w);m=a.trim(e.attr("value"));s=(q=e.data("prevVal"))!=null?q:"";e.data("prevVal",m);q=function(){return(r?e.parent().parent().siblings():e.parent().parent()).find(".no-results").html(b.noresultsText+" '"+a(w).attr("value")+"'")};if(m.length");d.attr("value",o).html(c);return n.push(a(d))});g=function(o){var c,d;c=a(o);if(!(c.attr("selected")&&r))if(!(c.attr("value")===""&&c.html()===""&&!r))if(function(){var k,l,p;p=[];k=0;for(l=n.length;k");g.addClass("no-results");g.html(b.noresultsText+" '"+f+"'").attr("value","");i.append(g)}else i.change();i.trigger("liszt:updated");a(".no-results").removeClass("active-result");e.val(f);if(!a.isEmptyObject(t)){f=a.Event("keydown");f.which=40;e.trigger(f)}if(x)return x(t)}})},b.delay)})}})(jQuery)}).call(this); diff --git a/src/ajax-chosen.coffee b/src/ajax-chosen.coffee index 6702563..45659e2 100644 --- a/src/ajax-chosen.coffee +++ b/src/ajax-chosen.coffee @@ -129,6 +129,7 @@ https://github.com/bicouy0/ajax-chosen do (currentOpt) -> $currentOpt = $(currentOpt) return if $currentOpt.attr('selected') and multiple + return if $currentOpt.attr('value') is '' and $currentOpt.html() is '' and !multiple #the deselect feature requires an empty entry presenceInNewOptions = (newOption for newOption in newOptions when newOption.attr('value') is $currentOpt.attr('value')) if presenceInNewOptions.length is 0 $currentOpt.remove()