Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> multiSelect, перенос из одного списка в другой 
V
    Опции темы
comtat
  Дата 23.6.2007, 22:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1310
Регистрация: 2.5.2006
Где: Россия, Казань

Репутация: 4
Всего: 71



Стоит задача передавать содержимое одного селекта в другой
например как в этом коде 
Код

<html>
<head>
<title>Multy Select</title>

<script type="text/javascript">
function replacer(select1, select2, bool) {
  var element;
  if(bool) {
    while(element = select1.firstChild)
        select2.appendChild(select1.removeChild(element));
  }
  else {
    for(var i = 0; element = select1.options[i]; i++) {
      if(element.selected) {
        select2.appendChild(element);
        element.selected = bool;
      }
    }
  }  
}

function mover(o, bool) {
  var e = o.options, i = o.selectedIndex, n = (bool) ? i - 1 : i + 1; 
  (i > -1 && n >= 0 && n < o.length) ? (o.insertBefore(o.removeChild(e[i]), 
    e[n]), o.selectedIndex = n) : '';  
}

</script>

</head>

<body>
<div>
 <form mathod="POST" action="http://localhost:8066/index3" name="TForm1_select" onsubmit="javasript:alert('form post')">

<table border="0"><tr><td>


<select name="select_left" multiple="multiple" size="10" id="select_left_id" ondblclick="javascript:replacer(document.getElementById('select_left_id'), document.getElementById('select_right_id'), false);">
<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>
</select>
</td>
<td>
<button name="button_to_right" id="id_button_to_right" onclick="javascript:replacer(document.getElementById('select_left_id'), document.getElementById('select_right_id'), false); return false;" style="display:block; margin-bottom:15px"> > </button>
<button name="button_all_to_right" id="id_button_all_to_right" onclick="javascript: replacer(document.getElementById('select_left_id'), document.getElementById('select_right_id'), true); return false;" style="display:block; margin-bottom:15px"> All>> </button>

<button name="button_all_to_left" id="id_button_all_to_left"  onclick="javascript: replacer(document.getElementById('select_right_id'), document.getElementById('select_left_id'), true); return false;" style="display:block; margin-bottom:15px"> << All  </button>
<button name="button_to_left" id="id_button_to_left" onclick="javascript: replacer (document.getElementById('select_right_id'), document.getElementById('select_left_id'), false); return false;" style="display:block; margin-bottom:15px"> < </button>

</td>
<td>
<select name="select_right" multiple="multiple" size="10" id="select_right_id" ondblclick="javascript: replacer(document.getElementById('select_right_id'), document.getElementById('select_left_id'), false);">
</select>
</td>
<td>
<img src="arrow_up.gif" onclick="javascript:mover(document.getElementById('select_right_id'), true)" style="display:block; margin-bottom:15px"/>
<img src="arrow_down.gif" onclick="javascript:mover(document.getElementById('select_right_id'), false)" style="display:block; margin-bottom:15px"/>
</td>
</tr></table>

<input type="submit" value="send"/>

 </form> 
</div>
</body>
</html>

только есть проблема, когда в левом селекте выделяешь строки или Ctrl'ом или Shift'ом 
то в правый селект передается максимум 2 значения
как с этим можно побороться ??


--------------------
Рожденный в СССР !!!
ExtJS - мой фреймворк 
PM   Вверх
SelenIT
Дата 24.6.2007, 00:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 49
Всего: 401



comtat, когда i-й элемент переносится во второй селект, i-м становится следующий - но в цикле-то i уже пройдено, и следующий за выделенным элементом в итоге пропускается. Лечится, например, добавлением
Код

    i--;
после 16-й строки.

P.S. Получается, в готовых скриптах в, судя по всему, развитии этого кода, эта проблема осталась... надо бы исправить;)


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
comtat
Дата 24.6.2007, 03:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1310
Регистрация: 2.5.2006
Где: Россия, Казань

Репутация: 4
Всего: 71



SelenIT , огромное спасибо все заработало  smile 
Цитата(SelenIT @  24.6.2007,  00:35 Найти цитируемый пост)
P.S. Получается, в готовых скриптах в, судя по всему, развитии этого кода, эта проблема осталась... надо бы исправить;) 

Это тоже верно, как раз оттуда


--------------------
Рожденный в СССР !!!
ExtJS - мой фреймворк 
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0705 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.