Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   установка нескольких значений в multiple select (https://javascript.ru/forum/dom-window/45387-ustanovka-neskolkikh-znachenijj-v-multiple-select.html)

CoRviN88 26.02.2014 16:25

установка нескольких значений в multiple select
 
пытаюсь сделать скрипт, который бы выставлял в multiple select'e те опции, которые совпадают с данными из массива..
пытаюсь делать так:

<? $array_tip_n_size = count($array_tip_n);
       	for ($j = 0; $j < $array_tip_n_size; ++$j)
        {
        ?>
        <script>
  	for(var i = 0; i < document.getElementById('filter_tip_n').length; i++)   {
    	if(document.getElementById('filter_tip_n').options[i].value == "<? echo $array_tip_n[$j]; ?>") {
      	document.getElementById('filter_tip_n').options[i].selected = true;
    	} 
  	}
	</script>
	<?
         }
    }
    ?>


но в итоге в select'e выбирается толькo одно значение..
подскажите что не так, заранее спасибо

ksa 26.02.2014 16:31

CoRviN88, риторический вопрос... ПХПисты начнут нормальные тестовые примеры показывать? Или прям так свой ПХПшный фарш и будут всегда копировать?

CoRviN88 26.02.2014 16:40

ну ок.
есть массив:
<? $array_tip_n[] = "Комната";
$array_tip_n[] = "Дом"; ?>


есть select:
<select id="filter_tip_n" name="filter_tip_n[]" class="span12" multiple>
<option>Комната</option>
<option>1-комнатная</option>
<option>Дом</option>
<option>Студия</option>
</select>


хочу на основе этого получить:
<select id="filter_tip_n" name="filter_tip_n[]" class="span12" multiple>
<option selected>Комната</option>
<option>1-комнатная</option>
<option selected>Дом</option>
<option>Студия</option>
</select>


с помощью вот этого:
<? $array_tip_n_size = count($array_tip_n);
       	for ($j = 0; $j < $array_tip_n_size; ++$j)
        {
        ?>
        <script>
  	for(var i = 0; i < document.getElementById('filter_tip_n').length; i++)   {
    	if(document.getElementById('filter_tip_n').options[i].value == "<? echo $array_tip_n[$j]; ?>") {
      	document.getElementById('filter_tip_n').options[i].selected = true;
    	} 
  	}
	</script>
	<?
         }
         }
        ?>


но в итоге выбирается только 1 пункт

CoRviN88 26.02.2014 17:42

разобрался, тему закрыть

kostyanet 27.02.2014 04:58

Так не делают. Вы записываете столько кусков кода js, сколько элементов в массиве.

Массив придется передавать в js, а там уже обычно.

На сервере можно задать только текущее, активное значение, если изменения идут через обновление страницы.

select multiple кодирует выбор двоичным кодом.

danik.js 27.02.2014 05:39

Если все опшны генерятся на сервере, то бля, не проще ли тут же, при их генерации ставить метку selected нужным? Помоему до этого даже даун додуматься может...

kostyanet 27.02.2014 08:07

for ($j = 0; $j < $array_tip_n_size; ++$j)
echo '<option', ($array_tip_n_size[$j]&j)?'selected="selected"':null,'>' ...


Часовой пояс GMT +3, время: 21:15.