48 lines
1.6 KiB
JavaScript
48 lines
1.6 KiB
JavaScript
var MultiSelect = (function (GLOB) {
|
|
// Добавить элементы в поле назначения:
|
|
function moveItems(btn, srcSelect, dstSelect) {
|
|
btn.onclick = function () {
|
|
var i;
|
|
for (i = srcSelect.options.length - 1; i >= 0; i -= 1) {
|
|
if (srcSelect.options[i].selected) {
|
|
dstSelect.add(new Option(srcSelect.options[i].text, srcSelect.options[i].value));
|
|
srcSelect.remove(i);
|
|
}
|
|
}
|
|
};
|
|
}
|
|
// Подготовка данных к отправке:
|
|
function formSubmit(element) {
|
|
// Ф-ция делает все элеметы спика select выбраными:
|
|
function makeSelect(element) {
|
|
var i;
|
|
for (i = 0; i < element.options.length; i += 1) {
|
|
element.options[i].selected = true;
|
|
}
|
|
}
|
|
// Ниже мы всего лишь кроссбрауз. устанавливаем слушатель
|
|
// события отправки формы:
|
|
if (GLOB.document.addEventListener) {
|
|
element.form.addEventListener("submit", function () {
|
|
makeSelect(element);
|
|
}, true);
|
|
} else if (GLOB.document.attachEvent) {
|
|
element.form.attachEvent("onsubmit", function () {
|
|
makeSelect(element);
|
|
});
|
|
} else {
|
|
element.form.onsubmit = function () {
|
|
makeSelect(element);
|
|
};
|
|
}
|
|
}
|
|
return function (srcSelect, dstSelect, takeBtn, dropBtn) {
|
|
return {
|
|
init : function (srcSelect, dstSelect, takeBtn, dropBtn) {
|
|
moveItems(takeBtn, srcSelect, dstSelect);
|
|
moveItems(dropBtn, dstSelect, srcSelect);
|
|
formSubmit(dstSelect);
|
|
}
|
|
}.init(srcSelect, dstSelect, takeBtn, dropBtn);
|
|
};
|
|
}(this)); |