diff --git a/select2.css b/select2.css index 747a2347..f27067e3 100644 --- a/select2.css +++ b/select2.css @@ -410,6 +410,10 @@ disabled look for already selected choices in the results dropdown background-image: linear-gradient(top, #eeeeee 1%, #ffffff 15%); } +.select2-locked { + padding: 3px 5px 3px 5px !important; +} + .select2-container-multi .select2-choices { min-height: 26px; } diff --git a/select2.js b/select2.js index c6f11fb7..d3e1b349 100644 --- a/select2.js +++ b/select2.js @@ -1838,7 +1838,7 @@ the specific language governing permissions and limitations under the Apache Lic return; } - choices = selection.find(".select2-search-choice"); + choices = selection.find(".select2-search-choice:not(.select2-locked)"); if (choices.length > 0) { choices.last().addClass("select2-search-choice-focus"); } @@ -2069,38 +2069,46 @@ the specific language governing permissions and limitations under the Apache Lic this.focusSearch(); }, - // multi addSelectedChoice: function (data) { - var choice=$( + var enableChoice = !data.locked, + enabledItem = $( "
  • " + "
    " + - " " + + " " + "
  • "), + disabledItem = $( + "
  • " + + "
    " + + "
  • "); + var choice = enableChoice ? enabledItem : disabledItem, id = this.id(data), val = this.getVal(), formatted; - + formatted=this.opts.formatSelection(data, choice.find("div")); if (formatted != undefined) { choice.find("div").replaceWith("
    "+this.opts.escapeMarkup(formatted)+"
    "); } - choice.find(".select2-search-choice-close") - .bind("mousedown", killEvent) - .bind("click dblclick", this.bind(function (e) { - if (!this.enabled) return; - $(e.target).closest(".select2-search-choice").fadeOut('fast', this.bind(function(){ - this.unselect($(e.target)); - this.selection.find(".select2-search-choice-focus").removeClass("select2-search-choice-focus"); - this.close(); - this.focusSearch(); - })).dequeue(); - killEvent(e); - })).bind("focus", this.bind(function () { - if (!this.enabled) return; - this.container.addClass("select2-container-active"); - this.dropdown.addClass("select2-drop-active"); - })); + if(enableChoice){ + choice.find(".select2-search-choice-close") + .bind("mousedown", killEvent) + .bind("click dblclick", this.bind(function (e) { + if (!this.enabled) return; + + $(e.target).closest(".select2-search-choice").fadeOut('fast', this.bind(function(){ + this.unselect($(e.target)); + this.selection.find(".select2-search-choice-focus").removeClass("select2-search-choice-focus"); + this.close(); + this.focusSearch(); + })).dequeue(); + killEvent(e); + })).bind("focus", this.bind(function () { + if (!this.enabled) return; + this.container.addClass("select2-container-active"); + this.dropdown.addClass("select2-drop-active"); + })); + } choice.data("select2-data", data); choice.insertBefore(this.searchContainer);