Написал функцию, которая создает выбираемый из коллекции namevalue. Я новичок в Jquery и Javascript, поэтому есть место для тонкой настройки.
function NameValue(name, value) {
this.name = name;
this.value = value;
}
function createRangeSelectable(elementName, nameValueCollection, functionReference) {
var newElementId = "selectable" + elementName;
var orderedListHTML = "<ol id='" + newElementId + "' class='selectable'>";
var itemHTML = "";
for (x in nameValueCollection) {
var item = nameValueCollection[x];
itemHTML = itemHTML + "<li class='ui-state-default'>" + item.name + "<input type='hidden' value='" + item.value + "'/></li>";
}
orderedListHTML = orderedListHTML + itemHTML + "</ol>"
$("#" + elementName).html(orderedListHTML);
$("#" + newElementId).bind("mousedown", function (e) {
e.metaKey = false;
}).selectable({
stop: function () {
var first = -1;
var last = -1;
$(".ui-selected", this).each(function () {
var index = $("li", this.parentElement).index(this);
if (first == -1)
first = index
last = index
});
var firstListItemValue;
var lastListItemValue;
$("li", this).each(function () {
var index = $("li", this.parentElement).index(this);
if (index == first) {
firstListItemValue = $(this).children('input').val();
}
if (index == last)
lastListItemValue = $(this).children('input').val();
if (index > first && index < last)
if (!$(this).hasClass("ui-selected"))
$(this).addClass("ui-selected");
});
functionReference(firstListItemValue, lastListItemValue);
}
});
//Usage
createRangeSelectable("YourDivId", NameValueArray, function(startValue, endValue){
});