О web-разработке
и даже немного больше...

Список выбора на JQuery

Подобные списки частенько применяются на сайтах для лучшей визуализации списков, в частности добавление либо удаления пунктов в списке. Выглядит это таким образом: два блока, которые могут содержать списки, в левом находятся пункты, которые нам предстоит выбрать, после выбора заданные пункты переносятся в правый блок. Переносить пункты можно как целиком, так и по одному. Так же есть кнопка, которая позволяет удалить пункты из списка.
Подобный список с визуализацией, мы можем получить, воспользовавшись 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 перед запуском кода скрипта. Ниже опубликованы ссылки для демонстрации работы, а так же архив с исходником.
Пример | Исходник

Опубликован: 03.11.2017 г.

См. также:

Загрузка файлов на сервер посредством Ajax
Отложенная загрузка изображений Lazy Load
Анимация набора текста на Typed.js
Анимация отсчёта на jquery-spincrement
Mega Dropdown — Меню для мобильной версии
Отслеживаем клик вне элемента на JQuery
Ajax-загрузка записей при скроллинге и нажатии кнопки
Stimed – задаем CSS-стили по времени

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Комментарии
  • Загрузка...
Друзья сайта