Added support for limiting selection
Fixes #59 Signed-off-by: Igor Vaynberg <igor.vaynberg@gmail.com>
This commit is contained in:
parent
94e004ef8c
commit
4344fa054e
@ -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 {
|
||||||
|
11
select2.js
11
select2.js
@ -1,4 +1,4 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2012 Igor Vaynberg
|
Copyright 2012 Igor Vaynberg
|
||||||
|
|
||||||
Version: @@ver@@ Timestamp: @@timestamp@@
|
Version: @@ver@@ Timestamp: @@timestamp@@
|
||||||
@ -1035,6 +1035,11 @@
|
|||||||
results.html(escapeMarkup(html));
|
results.html(escapeMarkup(html));
|
||||||
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>");
|
||||||
@ -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;
|
||||||
|
Loading…
Reference in New Issue
Block a user