06.02.2013, 17:56
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,121
|
|
ffx,
имитация зажатой клавиши Ctrl на мультиселекте
<!DOCTYPE HTML>
<html>
<head>
<title></title>
<meta charset="utf-8" />
<script src="https://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
<select multiple="multiple" size="5" >
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
</select>
<select multiple="multiple" size="5">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
</select>
<script>
$(document).on('click','select[multiple]',function (e) {
var a = $(this).data('a') ? $(this).data('a') : [];
var b = $(this).val();
if (1 == b.length) {
for (var c = 0; c < a.length; c++) if (a[c] == b[0]) {
a.splice(c, 1);
$(this).val(a);
b.length = 0;
break
}
b.length && (a.push(b[0]), $(this).val(a))
}
$(this).data('a',$(this).val() || []) ;
e.preventDefault()
});
</script>
</body>
</html>
Последний раз редактировалось рони, 06.07.2020 в 23:46.
|
|
07.02.2013, 10:18
|
Аспирант
|
|
Регистрация: 29.09.2008
Сообщений: 48
|
|
рони,
спасибо большое, но если выбирать несколько одним кликом, то все старые сбиваются.
и что означает эта строка
b.length [B]&&[/B] (a.push(b[0]), $(this).val(a))
не каждый элемент а именно целиком конструкция
Hoshinokoe,
плагин хорош, но желательно чтобы он выглядил как мультиселект а не как инпут
Последний раз редактировалось ffx, 07.02.2013 в 10:29.
|
|
07.02.2013, 10:28
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,121
|
|
Сообщение от ffx
|
если выбирать несколько одним кликом
|
это как?
|
|
07.02.2013, 10:31
|
Аспирант
|
|
Регистрация: 29.09.2008
Сообщений: 48
|
|
ну так скажем click+drag то есть кликнули и потянули вниз
Цитата:
|
и что означает эта строка
b.length [B]&&[/B] (a.push(b[0]), $(this).val(a))
не каждый элемент а именно целиком конструкция
|
|
|
07.02.2013, 10:50
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,121
|
|
Сообщение от ffx
|
элемент выделяется, еще раз по нему же - выделение снимается, если выделено 10 элементов и по 1 выделенному кликнуть, то он перестает быть выделенным, все остальные 9 все так же выделены
|
это выполнено
Сообщение от ffx
|
b.length && (a.push(b[0]), $(this).val(a))
|
иная форма записи того же самого
if (b.length ){a.push(b[0]); $(this).val(a)} ;
|
|
07.02.2013, 10:54
|
Аспирант
|
|
Регистрация: 29.09.2008
Сообщений: 48
|
|
рони,
спасибо)чет я еще такого не встречал)
|
|
07.02.2013, 11:34
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
<!DOCTYPE HTML>
<html>
<head>
<title></title>
<meta charset="utf-8" />
<script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
<select multiple="multiple" size="5" >
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
</select>
<select multiple="multiple" size="5">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
</select>
<script>
$(document).on('click','select[multiple] option',function(e){
var a = $(this);
a.toggleClass('active')
a.parent().children('option:not(.active)').removeAttr('selected');
a.parent().children('option.active').attr('selected','selected');
e.preventDefault();
});
</script>
</body>
</html>
Последний раз редактировалось Deff, 07.02.2013 в 11:57.
|
|
07.02.2013, 11:42
|
Аспирант
|
|
Регистрация: 29.09.2008
Сообщений: 48
|
|
Deff,
вот я почти решил как вы
$(document).on('click','select[multiple] option',function(e){
var option = $(this)
if (option.attr('select') == 'yes'){
option.prop('selected',false).attr('select','no');
}
else {
option.attr('select','yes');
}
return false;
});
но ие в упор не хочет воспринимать данный селектор 'select[multiple] option' и даже 'select option' а работает только на 'select'
|
|
07.02.2013, 11:42
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,121
|
|
Deff, код не кросбраузерный
а рабочий код для хрома был у ТС с самого начала.
|
|
07.02.2013, 11:45
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,121
|
|
ffx,
Deff,
дело не в селекторе а в обработке клика на опцион
|
|
|
|