Javascript для Select

mshdn

Новичок
Javascript для Select

Делал кто-нибудь для для обычного ( не multiple ) Select множественный выбор ( без удержания Ctrl)
с помощью Javascript?
 

Sawa

Новичок
не multiple подразумевает 1 вариант выбора из списка. странный вариант...

с другой стороны ты можешь управлять содержимым селекта, т.е. по клику генерить атрибуты selected и хранить уже выбранные позиции
а надо ли оно ? не совсем интуитивный интерфейс получится, да и не факт что будет работать корректно
 

Alexandre

PHPПенсионер
используя prototype можно творить чудеса, а не только делать для Select множественный выбор
 

mshdn

Новичок
Не четко сформулировал вопрос - есть Меню Select с множественным выбором, как поменять ctrl+клик на клик?
Нужно чтобы при множественном выборе из списка можно было выбирать элементы одним щелчком мышки, а не ctrl+щелчок, как по-умолчанию.
Мне не удается это сделать, т.к. событие Onchange для Select и SelectedIndex не позволяет узнать индекс последней выбранной опции, если их несколько. OnClick на опции не работает, чтобы можно было передать индех выбранной опции.
Может через AJAX и обрабатывать в PHP, но опять где взять индех опции?
 

dimagolov

Новичок
mshdn, напиши (или возьми готовый) кастомный селект и крути его как хочешь. со стандартным так не выйдет.
 

Sawa

Новичок
тебе и не надо узнавать индекс последней выбранной позиции.
на мультиселектах так:
при клике на элементе, добавляем в массив выбранный индекс.
если индекс добавляется повторно, значит пометка убирается, и из массива надо грохнуть повторно добавленный индекс. после манипуляций с массивом перебираем все элементы и расставляем выделения на элементах согласно индексам находящимся в массиве
отслеживаем чтобы не было зажато ctrl, иначе будет глючить чутка ( тут подразумеваю что при зажатом ctrl будет выбрано несколько элементов, а при простом клике выделится только 1 элемент, так и различать ).

для самого юзверя динамическое выделение будет не заметно


UPD: вообще достаточно много готовых вариантов существует, если не в учебных целях интересуешься, возьми готовый
 

mshdn

Новичок
на мультиселектах ты не определишь, на каком элементе кликают, если их уже несколько - SelectedIndex дает индекс первой из выбранных опций.

-~{}~ 15.10.09 00:03:

dimagolov, я сделал свой селект (на onclic() ) и записываю выбранные индексы в массиве под Javascript. Теперь как через AJAX передать этот массив в PHP?
Как массив передается в AJAX? - в GET не спрячешь,
через POST - как?
 

Mols

Новичок
mshdn
можно и в гет. Запись приблизительно такая.
?arr_name[1]=val_1&arr_name[2]=val_2&arr_name[3]=val_3 и т.д.
может и так отработает
?arr_name[]=val_1&arr_name[]=val_2&arr_name[]=val_3... точно не уверен.
 

dimagolov

Новичок
mshdn, обычно подобное передается как массив выбранных индексов или значений. Не совсем понимаю в чем проблема, можно, к примеру, сделать скрытый multi-select который и будет передаваться, можно параметры JS собрать, все зависит от того как (чем) ajax запрос делается.
 

mshdn

Новичок
Вроде получилось передать из яваскрипт в ПХП:
<?php
if (@$_POST['Submit_sr'] )
{
$masp=@$_POST['mash'];
echo $masp[0];
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Untitled</title>
<SCRIPT language=JavaScript type=text/JavaScript>
<!--
var mas;
mas=new Array(100);
for(j=0;j<100;j++)
{ mas[j]=0;}
function doclick(t,i)
{
if(t.className=='selected')
{
t.className='normal';
mas=0;
}
else
{
t.className='selected'
mas=1;
}
x=mas;
}

function gener()
{
return document.myform.mash.value=mas; // вот передача!
}
-->
</script>
.......
<form action="pr_scroll.php" name='myform' method='post'>
......
<tr>
<td class="normal"
onclick="doclick(this,1)">1234567890w</ td>
</tr>
<tr>
<td class="normal"
onclick="doclick(this,2)">1234567890e</td>
</tr>
........
<input type=hidden name='mash'>
<INPUT type=submit name="Submit_sr" value="Save"
onclick="javascript:gener()">
</form
 
Сверху