Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / select multiple / 9 сообщений из 9, страница 1 из 1
06.12.2014, 22:16
    #38827149
Areostar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select multiple
Нужен комоокс с возможностью множественного выора

Написал так:

Код: html
1.
2.
3.
4.
5.
6.
7.
8.
<select multiple="multiple" id="category" >
       <option value="0">Forex</option>
	<option value="0">Entertainment</option>
	<option value="0">Food Sale</option>
	<option value="0">Tourism</option>
	<option value="0">Hobby</option>
	<option value="0">Science</option>
</select>



получилось то что на карт инку во вложении - квдратик с четырьмя строками

а мне надо чтоб была одна строка и список открывался к низу при клике(но и множественный выбор тоже)

Как это сделать
...
Рейтинг: 0 / 0
06.12.2014, 22:32
    #38827159
JeStone
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select multiple
Areostar,
Если не ошибаюсь, то без извращений такого не сделать. Как вариант можно использовать jQuery UI Controls
http://www.igniteui.com/combo/selection-and-checkboxes
...
Рейтинг: 0 / 0
07.12.2014, 05:58
    #38827220
Areostar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select multiple
Спасибо. Почитаю
...
Рейтинг: 0 / 0
08.12.2014, 11:57
    #38827861
-k2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select multiple
...
Рейтинг: 0 / 0
08.12.2014, 12:11
    #38827875
carrotik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select multiple
... ну чем людям не нравятся чек-боксы? ...
...
Рейтинг: 0 / 0
08.12.2014, 12:14
    #38827878
-k2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select multiple
carrotik,

да ладно, чойзен симпатичная и компактная малютка :)
...
Рейтинг: 0 / 0
10.01.2015, 15:35
    #38851266
Areostar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select multiple
carrotik... ну чем людям не нравятся чек-боксы? ...

А ссылочку можно?
...
Рейтинг: 0 / 0
11.01.2015, 10:31
    #38851517
user89
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select multiple
Areostar,

работает в нормальных браузерах и IE9+. Использование: диву ставим класс= CheckCombobox и внутри просто перечисляем значения через запятую.
http://jsfiddle.net/r4rq6cpv/
...
Рейтинг: 0 / 0
26.01.2015, 17:59
    #38863560
user89
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select multiple
Более улучшенный вариант с прокруткой. Также добавлена функция "Выделить всё"
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
<!DOCTYPE html>
<html>
<head>
<title>CheckCombobox</title>
<style>
* {margin:0; padding:0;}
.CheckCombobox {
	background:#fff;
	font:8pt Verdana,Arial,'MS Sans Serif','sans-serif';
	width:150px;
}
.CheckCombobox .DivForInput {
	margin:0;
	padding:0 0 0 4px;
	height:19px;
	overflow:hidden;
	border:1px solid #B5B8C8;
}
.CheckCombobox .DivForInput input {
	font:8pt Verdana,Arial,'MS Sans Serif','sans-serif';
	margin:0; padding:0; border:0;
	outline:none;
	height:19px;
	line-height:18px;
	float:left;
}
.cmdList {
	background:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAAUCAIAAAAP9fodAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAOJJREFUOE+9kEEKgmAQhes4LSJcBh0hqluVxwk6QttKCoNUcFtp4kJFd73XkPymLYagh8w/vnnfP2h/vdlOxoOeVsAeevV+xWKNuC3Si9jdkKyM4rj25NV0MGpg+DVlWVZVhYoe47Yj1xG7vYSXoiishT2cLkezFcgkSVDRw4GPKTISJnZ9C99Y55DGWmHkFkzrJLGLoTAM8zyXtDzo4cA3Y8TOTQVBkGVZvQc9HDPiui4xHB/yfZLW3EZF3w4QO3XJ87w0TVE7p8SOX4QlnRPHcYjh0IrYQS9ie72I7fT6L/YELEZQH9hMDiwAAAAASUVORK5CYII=') no-repeat 0 0;
	width:18px;
	height:20px;
	cursor:pointer;
	float:right;
}
.CheckCombobox .CheckCont {position:absolute;	margin-top:-9999px;}
.CheckCombobox .CheckContFocused {
	display:block;
	position:absolute;
	margin-top:-1px;
	z-index:2;
	background:#fff;
	border:1px solid #B5B8C8;
	outline:none;
	white-space:nowrap;
	overflow-y:auto;
	overflow-x:hidden;
}
.CheckCombobox .CheckTable {border-collapse:collapse;}
.CheckCombobox td {padding:5px !important;}
.CheckCombobox input[type="checkbox"] {position:absolute;	left:-9999px;}
.CheckCombobox input[type="checkbox"] + a {
	padding-left:16px;
	background:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAANCAIAAAD9iXMrAAAACXBIWXMAAAsSAAALEgHS3X78AAAAYklEQVQoz43RsQ2AQAwDQMfOGmzANBT0jEJLyUKsRsFDvsHgLtLFUpQYphU/kgCObb4GtkhKSZkpidS47Hw23hBJAPxEpJrzqPo86p1D5TzqnUMRt/MoIqrPo7rDIwDx878ncvgH6gjXVecAAAAASUVORK5CYII=') no-repeat;
}
.CheckCombobox input[type="checkbox"]:checked + a {
	background:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAANCAIAAAD9iXMrAAAACXBIWXMAAAsSAAALEgHS3X78AAAAnElEQVQoz43ROwoCMRAG4P/hNbyAnQiCWHgFEQsLwbN4gz2KjY29pYgIeh2LCUl0d2WnCCT5MpNMON4cMSBGAK7NPiakImxLjlHS5NAon+hDkgDoD5qeZrGWXB8CECmTC7S8rH5QbJEszjaA+XlRo/fuRbLkixyx10ZkqWvb9/Utv71GpW5uwXP7aKP6fqlPkjvR13tDdyIAHPi/H8GqHHTeOs1YAAAAAElFTkSuQmCC') no-repeat;
}
</style>
</head>
<body onload="SetCheckCombobox();">
<div style="margin:5px;">DIV просто так</div>
<br>
<table><tr>
	<td>&#160; &#160; &#160; &#160; &#160; &#160;</td>
	<td> <div class="CheckCombobox">Исполнение,Поддержка,Управление карьерой подчинённых,Участие в наборе персонала,Строка 1,Строка 2,Строка 3,Строка 4</div> </td>
	<td>&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;</td>
	<td> <div class="CheckCombobox" id="ProjStatus">Open,Closed,On hold</div> </td>
	<td>&#160; <button onclick="SelectAllCheckContClick(gid('ProjStatus'))">Выделить всё</button> </td>
</tr></table>
<br>
<div style="margin:5px;">DIV просто так</div>

<script>
function gid(idx) {return document.getElementById(idx);}

function GetScrollWidth() {
	var div = document.createElement('div');
	div.style.overflowY = 'scroll';
	div.style.width = '50px'; div.style.height = '50px';
	div.style.visibility = 'hidden';
	document.body.appendChild(div);
	var sw = div.offsetWidth - div.clientWidth;
	document.body.removeChild(div);
	return sw;
}
var ScrollWidth = GetScrollWidth();


function SetCheckCombobox() {
	var d = document.getElementsByClassName('CheckCombobox');
	for (i=0; i < d.length; i++) {
		var s = '<div class="DivForInput"> <input type="text" readonly> <div class="cmdList" onclick="ShowCheckCont(this);"></div> </div>' +
		'<div class="CheckCont">' +
		'<table class="CheckTable"><tbody>' +
		'<tr><td> <label><input type="checkbox" onclick="SelectAllCheckCont(this);"><a>(Выделить всё)</a></label> </td></tr>';
		var arr = d[i].innerHTML.split(',');
		for (j=0; j < arr.length; j++) {s = s + '<tr><td> <label><input type="checkbox" onclick="GetJoinStringCheckCont(this)"><a>' + arr[j] + '</a></label> </td></tr>';}
		s = s + '</tbody></table></div>';
		d[i].innerHTML = s;
		d[i].children[0].style.width = d[i].offsetWidth - 4 + 'px';
		d[i].children[0].children[0].style.width = d[i].offsetWidth - 25 + 'px';

		var el = d[i].children[1]; // Тот самый выпающий список
		el.style.minWidth = d[i].offsetWidth + 'px';
		el.style.maxHeight = '200px';

		if (el.offsetHeight < el.scrollHeight) {el.style.width = el.offsetWidth + ScrollWidth + 'px';}

		// Добавим события к выпадающему списку
		el.addEventListener('focus', onCheckContFocus, true);
		el.addEventListener('blur', onCheckContBlur, true);
	}
}

function SelectAllCheckContClick(el) {
	var chk = el.children[1].children[0].children[0].children[0].children[0].children[0].children[0];
	chk.checked = true;
	SelectAllCheckCont(chk);
}

function SelectAllCheckCont(el) {
	var rows = el.parentNode.parentNode.parentNode.parentNode.parentNode.rows;
	for (j=1; j < rows.length; j++) {rows[j].cells[0].children[0].children[0].checked = el.checked;}
	GetJoinStringCheckCont(el);
}

function GetJoinStringCheckCont(el) {
	var rows = el.parentNode.parentNode.parentNode.parentNode.parentNode.rows;
	var s = '';
	for (j=1; j < rows.length; j++) {
		if (rows[j].cells[0].children[0].children[0].checked) {s = s + ',' + rows[j].cells[0].children[0].children[1].innerHTML};
	}
	el.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.children[0].children[0].value = s.substring(1);
}

function ShowCheckCont(el) {
	el = el.parentNode.parentNode.children[1];
	el.className = 'CheckContFocused';
	el.tabIndex = '-1';	el.focus();
}

function onCheckContFocus() {this.className = 'CheckContFocused';}
function onCheckContBlur() {this.className = 'CheckCont';}
</script>
</body>
</html>

...
Рейтинг: 0 / 0
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / select multiple / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]