1
0
mirror of synced 2024-11-26 23:06:02 +03:00

Added support for limiting selection

Fixes #59

Signed-off-by: Igor Vaynberg <igor.vaynberg@gmail.com>
This commit is contained in:
Kevin Brown 2012-07-27 07:53:21 -04:00 committed by Igor Vaynberg
parent 94e004ef8c
commit 4344fa054e
2 changed files with 14 additions and 2 deletions

View File

@ -315,6 +315,11 @@ Version: @@ver@@ Timestamp: @@timestamp@@
display: list-item; display: list-item;
} }
.select2-results .select2-selection-limit {
background: #f4f4f4;
display: list-item;
}
/* /*
disabled look for already selected choices in the results dropdown disabled look for already selected choices in the results dropdown
.select2-results .select2-disabled.select2-highlighted { .select2-results .select2-disabled.select2-highlighted {

View File

@ -1,4 +1,4 @@
/* /*
Copyright 2012 Igor Vaynberg Copyright 2012 Igor Vaynberg
Version: @@ver@@ Timestamp: @@timestamp@@ Version: @@ver@@ Timestamp: @@timestamp@@
@ -1036,6 +1036,11 @@
postRender(); postRender();
} }
if (opts.selectionLimit && ("getVal" in this) && this.getVal().length >= opts.selectionLimit) {
render("<li class='select2-selection-limit'>" + opts.formatLimitReached(opts.selectionLimit) + "</li>");
return;
}
if (search.val().length < opts.minimumInputLength) { if (search.val().length < opts.minimumInputLength) {
render("<li class='select2-no-results'>" + opts.formatInputTooShort(search.val(), opts.minimumInputLength) + "</li>"); render("<li class='select2-no-results'>" + opts.formatInputTooShort(search.val(), opts.minimumInputLength) + "</li>");
return; return;
@ -1983,7 +1988,7 @@
$(val).each(function () { $(val).each(function () {
if (indexOf(this, unique) < 0) unique.push(this); if (indexOf(this, unique) < 0) unique.push(this);
}); });
this.opts.element.val(unique.length === 0 ? "" : unique.join(",")); this.opts.element.val(unique.length === 0 ? "" : unique.join(this.opts.separator));
} }
}, },
@ -2138,9 +2143,11 @@
}, },
formatNoMatches: function () { return "No matches found"; }, formatNoMatches: function () { return "No matches found"; },
formatInputTooShort: function (input, min) { return "Please enter " + (min - input.length) + " more characters"; }, formatInputTooShort: function (input, min) { return "Please enter " + (min - input.length) + " more characters"; },
formatLimitReached: function (limit) { return "You can only select " + limit + " items"; },
formatLoadMore: function (pageNumber) { return "Loading more results..."; }, formatLoadMore: function (pageNumber) { return "Loading more results..."; },
minimumResultsForSearch: 0, minimumResultsForSearch: 0,
minimumInputLength: 0, minimumInputLength: 0,
selectionLimit: 0,
id: function (e) { return e.id; }, id: function (e) { return e.id; },
matcher: function(term, text) { matcher: function(term, text) {
return text.toUpperCase().indexOf(term.toUpperCase()) >= 0; return text.toUpperCase().indexOf(term.toUpperCase()) >= 0;