Подобные списки частенько применяются на сайтах для лучшей визуализации списков, в частности добавление либо удаления пунктов в списке. Выглядит это таким образом: два блока, которые могут содержать списки, в левом находятся пункты, которые нам предстоит выбрать, после выбора заданные пункты переносятся в правый блок. Переносить пункты можно как целиком, так и по одному. Так же есть кнопка, которая позволяет удалить пункты из списка.
Подобный список с визуализацией, мы можем получить, воспользовавшись JQuery-плагином, о котором и поговорим далее. Плагин очень прост в использовании, его несложно интегрировать в свои проекты. Первым делом следует разместить html-код, с которым предстоит работать.
HTML код для списков
<table border="0" cellpadding="0" cellspacing="15">
<tr>
<td id="location"><select name="Location" id="loc" multiple="multiple" required size="9">
<option value="Almaty">Алма-Ата</option>
<option value="Astana">Астана</option>
<option value="Shymkent">Шымкент</option>
<option value="Karaganda">Караганда</option>
<option value="Aktobe">Актобе</option>
<option value="Taraz">Тараз</option>
<option value="Pavlodar">Павлодар</option>
<option value="Ust-Kamenogorsk">Усть-Каменогорск</option>
<option value="Semey">Семей</option>
</select></td>
<td><button id="add" type="button">Добавить все</button>
<button id="rem" type="button">Удалить все</button></td>
<td><textarea id="selected" rows="10" readonly></textarea></td>
</tr>
</table>
После того, как прописали структуру списка, самое время задать CSS-стили для этого дела.
CSS код
table {
width: 500px;
}
select {
border: 1px solid #f2f2f2;
color: #9E9E9E;
padding: 10px;
margin-right: 10px;
}
select option {
padding: 3px 10px;
background: none;
transition: all 0.5s ease;
cursor: pointer;
}
select option:hover {
background: #fafafa;
}
button {
border: none;
outline: none;
padding: 8px 15px;
border-radius: 25px;
font-size: 14px;
color: #fff;
opacity: 1;
display: block;
transition: all 0.5s ease;
width: 150px;
margin-bottom: 10px;
cursor-pointer;
}
button:hover {
opacity: 0.8;
}
#add {
background: #8BC34A;
}
#rem {
background: #FF5722;
}
textarea {
border: 1px solid #f2f2f2;
color: #9E9E9E;
padding: 10px 15px;
margin-left: 10px;
line-height: 20px;
}
Как вы можете заметить, объем CSS кода довольно скромен, что так же весьма радует глаз. Вся основная работа приходится на код JavaScript.
JavaScript код
$(document).on('change', '#reporttype', function() {
var value = $(this).val();
var location = $("#location");
var employeelist = $("#employeelist");
var chosendates = $("#chosendates");
var formattype = $("#formattype");
var submitbtn = $("#submitbtn");
if (value == "checklistreports") {
location.show();
employeelist.show();
chosendates.show();
formattype.show();
submitbtn.show();
} else if (value == "locationreports") {
location.show();
employeelist.hide();
chosendates.show();
formattype.show();
submitbtn.show();
} else {
location.hide();
employeelist.hide();
chosendates.hide();
formattype.hide();
submitbtn.hide();
}
});
var opts = document.querySelectorAll('#loc option');
document.getElementById('add').addEventListener('click', function() {
for (var i = 0; i < opts.length; i++) {
opts[i].selected = true;
}
reflectChange();
});
document.getElementById('rem').addEventListener('click', function() {
for (var i = 0; i < opts.length; i++) {
opts[i].selected = false;
}
reflectChange();
});
document.getElementById('loc').addEventListener('change', reflectChange);
function reflectChange() {
document.getElementById('selected').value = '';
for (var i = 0; i < opts.length; i++) {
if (opts[i].selected)
document.getElementById('selected').value += opts[i].text + '\n';
}
}
var opts1 = document.querySelectorAll('#EmployeeName option');
document.getElementById('add1').addEventListener('click', function() {
for (var i = 0; i < opts1.length; i++) {
opts1[i].selected = true;
}
reflectChange1();
});
document.getElementById('rem1').addEventListener('click', function() {
for (var i = 0; i < opts1.length; i++) {
opts1[i].selected = false;
}
reflectChange1();
});
document.getElementById('EmployeeName').addEventListener('change', reflectChange1);
function reflectChange1() {
document.getElementById('selected1').value = '';
for (var i = 0; i < opts1.length; i++) {
if (opts1[i].selected)
document.getElementById('selected1').value += opts1[i].text + '\n';
}
}
Не забудьте подключить библиотеку JQuery перед запуском кода скрипта. Ниже опубликованы ссылки для демонстрации работы, а так же архив с исходником.
Пример | Исходник