Форум сетевых администраторов
Показаны 13 сообщений на этой странице

Форум сетевых администраторов (http://netadmin.ws/forum/index.php)
- Java/Java Scripts (http://netadmin.ws/forum/forumdisplay.php?forumid=9)
-- Динамическое изменение элементов в списке Select (http://netadmin.ws/forum/showthread.php?threadid=9865)


Помещено he][es 15-11-2004 в 08:28:

Question Динамическое изменение элементов в списке Select

Господа, помогите плз доработать скриптик, есть:
такой скрипт, мне нужно сделать так, что б в этом массиве:

code:

var aHouseValues = new Array(
"12/15,18,123",
"2,4",
"2/8,10/12",
"3",
"2,4,12,5/6,8"
);


брался из массива вида
3
Key: 0; Value: Array
1 Бухгалтер
6
Key: 0; Value: Array
2 Менеджер
Key: 1; Value: Array
11 Клерк
5
Key: 0; Value: Array
4 Строитель
Key: 1; Value: Array
6 Садовник
Key: 2; Value: Array
8 Водитель
Key: 3; Value: Array
14 Архитектор

Т.е. туда подставлялись не только "значения" но и ключи индексов. Т.е. есть 2 таблицы разделы и должности
разделы:
раздел_id имя_раздела

Должности:
должность_id раздел_id название_должности


и при выборе раздела в одном селекте, во 2ой подставлялись должности (С их реальными ID!)

__________________
Админ - вождь Апачей...


Помещено polo 15-11-2004 в 21:50:

Посмотри вариант, я его всегда использую, может то что надо.

__________________
Всегда есть решение.


Помещено he][es 15-11-2004 в 22:10:

Пасиба! то что надо! Только у меня теперь такая проблема появилась: при редактировании данного раздела необходимо, что бы автоматически были выбраны раздел и должность. Т.е. необходимо выставить selected-ы... Мне известны ID раздела и должности.

Если сделать так:
document.forms["edit_vakansiu"].elements["razdel_id"].selectedIndex = 6;
то выберается раздел по индексу а не по ID, т.е. просто по порядку.


code:

<option value="1">Ð_кономическое</option>
<option value="22">Техническое</option>
<option value="31">Гуманитарное</option>
<option value="42">Другое</option>
<option value="53">Неполное высшее</option>
<option value="66">Среднее специальное</option>
<option value="7">Среднее</option>
<option value="81">Учащийся</option>


Известен ID 66 индекс которого 5... Но откуда мне узнать индекс по ID?

__________________
Админ - вождь Апачей...


Помещено blacki 26-11-2004 в 10:40:

Как вариант: добавить id в index, получится 566, а потом разабрать, на 5 и 66.

__________________
Национальность - русский, вероисповедание - программист.


Помещено he][es 28-11-2004 в 07:57:

blacki не понял?.. index же просто типа "порядковый номер"... Подскажите плз! (или это нереально? Или нужно будет перебирать весть селект и отлавливать нужный id?)

__________________
Админ - вождь Апачей...


Помещено he][es 30-11-2004 в 16:09:

Господа! Ну хоть скажите это реально???

__________________
Админ - вождь Апачей...


Помещено RaZEr 01-12-2004 в 03:04:

У селекта есть свойство value.

__________________
The time was broken ...


Помещено he][es 01-12-2004 в 06:27:

RaZEr я знаю, но по нему он .selectedIndex = 6; не сделает!..
Повторюсь! Мне нужно зная value выбрать элемент! Выше вполне подробно описано...

he][es добавил 01-12-2004 в 08:23:05:
Кажется придумал: когда я создаю элемент
var newOpt = new Option("text", "value", isDefaultSelectedFlag, isSelectedFlag);
Есть свойства isDefaultSelectedFlag, isSelectedFlag как я понял это как раз то что мне надо! (Только обясните мне плз что есть что... какое из них за что отвечает?)

__________________
Админ - вождь Апачей...


Помещено he][es 01-12-2004 в 13:34:

Вроде как всё сделал, но теперь вылез глюк. код такой:

code:

<form action="manager.php?edit=ok" ENCTYPE="multipart/form-data" method="post" name="edit_vakansiu">
        <table align="center" border="0" cellspacing="0" cellpadding="0">
	  <tr><td colspan="2"><h4 style="margin-top: 10px;">Ð_аздел:</h4></td></tr>
	  <tr><td width="180">Выберите должность</td><td><select name="dolgnost_id" class="pr"><option value="0" selected>Выдерите раздел</option><option value="n">Другое</option></select></td></tr>
	  <tr><td width="180">Выберите раздел</td><td><select name="razdel_id" class="pr" onChange="MkDolgnostListValues(this.value)">
<option value="0">Выберите раздел</option><option value="1">Ð_уководители</option>

<option value="2">Финансы</option>
<option value="3">Бухгалтерия</option>
<option value="4">Маркетинг</option>
<option value="5">Производство</option>
<option value="6">Менеджмент</option>
<option value="7">Ценные бумаги</option>
<option value="8">ИТ</option>
<option value="99" selected>Ð_азное</option>
<option value="107">Ð_еклама, Маркетинг, PR</option>

<option value="9">Пищевая</option>
<option value="n">Другое</option></select></td></tr>

	</table>
	<div align="center" style="padding-top:20px;"><input name="submit" type="image" lang="ru" value="submit" src="/images/edit_button.gif" alt="Изменить"></div>
	</form>


<script type="text/javascript" LANGUAGE="JavaScript1.2">
<!--
var dolgnostiValues = new Array();
dolgnostiValues[0] = new Array("Выберите раздел");
dolgnostiValues[3] = new Array()
dolgnostiValues[3][1] = "Бухгалтер";
dolgnostiValues[6] = new Array()
dolgnostiValues[6][2] = "Менеджер";
dolgnostiValues[6][11] = "Клерк";
dolgnostiValues[8] = new Array()
dolgnostiValues[8][3] = "Программист";
dolgnostiValues[8][9] = "Web-программист";
dolgnostiValues[8][10] = "Системный администратор";
dolgnostiValues[8][12] = "HTML-кодер";
dolgnostiValues[8][13] = "Дизайнер";
dolgnostiValues[8][18] = "Ð_уководитель отдела ИТ";
dolgnostiValues[8][19] = "Ð_уководитель отдела ИТ22";
dolgnostiValues[8][29] = "Верстальщик";
dolgnostiValues[8][28] = "Начальник отдела ИТ";
dolgnostiValues[5] = new Array()
dolgnostiValues[5][4] = "Строитель";
dolgnostiValues[5][6] = "Садовник";
dolgnostiValues[5][8] = "Водитель";
dolgnostiValues[5][14] = "Архитектор";
dolgnostiValues[99] = new Array()
dolgnostiValues[99][5] = "Учитель";
dolgnostiValues[99][7] = "Художник";
dolgnostiValues[99][16] = "Секретарь, офис-менеджер";
dolgnostiValues[99][17] = "Оператор ПК";
dolgnostiValues[9] = new Array()
dolgnostiValues[9][15] = "Директор";
dolgnostiValues[107] = new Array()
dolgnostiValues[107][20] = "Заместитель директора по маркетингу";


function MkDolgnostListValues(index){

    var oDolgnostListList = document.forms["edit_vakansiu"].elements["dolgnost_id"];
    var oDolgnostListListOptionsCnt = oDolgnostListList.options.length;
    oDolgnostListList.length = 0;

counter = new Array();
var counters=1;

if(dolgnostiValues[index]){
    if(index!=0) {
    if (document.createElement){
           var newDolgnostListListOption = document.createElement("OPTION");
            newDolgnostListListOption.text = 'Выберите должность';
            newDolgnostListListOption.value = 0;
	    newDolgnostListListOption.selected = true;
            (oDolgnostListList.options.add) ? oDolgnostListList.options.add(newDolgnostListListOption) : oDolgnostListList.add(newDolgnostListListOption, null);
    }else{
            oDolgnostListList.options[i] = new Option(i, dolgnostiValues[i], true, true);
    }
    }
	for (y=0; y < dolgnostiValues[index].length; y++) {
		if(dolgnostiValues[index][y]){
		        if (document.createElement){
		            var newDolgnostListListOption = document.createElement("OPTION");
		            newDolgnostListListOption.text = dolgnostiValues[index][y];
		            newDolgnostListListOption.value = y;
			    if((index == 99) && (y == 7)) {
				newDolgnostListListOption.selected = true;
				//alert(newDolgnostListListOption.text + '-t ' + newDolgnostListListOption.value +'-v ri-'+ index +'99' + y +'-y 7');
				//alert(newDolgnostListListOption.text+ ' ' +newDolgnostListListOption.selected);
			    }

		            (oDolgnostListList.options.add) ? oDolgnostListList.options.add(newDolgnostListListOption) : oDolgnostListList.add(newDolgnostListListOption, null);
		        }else{
			    if(index == 99 && y == 7) {
		        	oDolgnostListList.options[i] = new Option(i, dolgnostiValues[i], true, true);
			    } else {
		        	oDolgnostListList.options[i] = new Option(i, dolgnostiValues[i], false, false);
			    }
		        }
		}
	}
    if(index!=0) {
    if (document.createElement){
           var newDolgnostListListOption = document.createElement("OPTION");
            newDolgnostListListOption.text = 'Другое...';
            newDolgnostListListOption.value = 'n';
            (oDolgnostListList.options.add) ? oDolgnostListList.options.add(newDolgnostListListOption) : oDolgnostListList.add(newDolgnostListListOption, null);
    }else{
            oDolgnostListList.options[i] = new Option(i, dolgnostiValues[i], false, false);
    }
    }
} else {
	if (document.createElement){
		var newDolgnostListListOption = document.createElement("OPTION");
		newDolgnostListListOption.text = 'Для данного раздела нет должностей';
		newDolgnostListListOption.value = 'n';
		newDolgnostListListOption.selected = true;
		(oDolgnostListList.options.add) ? oDolgnostListList.options.add(newDolgnostListListOption) : oDolgnostListList.add(newDolgnostListListOption, null);
        }else{
            oDolgnostListList.options[i] = new Option(i, dolgnostiValues[i], true, true);
        }
}

}

//alert(document.forms["edit_vakansiu"].elements["dolgnost_id"].text+ ' ' +document.forms["edit_vakansiu"].elements["dolgnost_id"].selectedIndex);
MkDolgnostListValues(document.forms["edit_vakansiu"].elements["razdel_id"].value=99);

//-->
</script>


(99 и 7 вставляются из php)
См. в дураццком IE о он сглючивает и выдает не ту проф. раскомментируем alert и всё работает прекрасно.... как alert влияет на код непонятно...

__________________
Админ - вождь Апачей...


Помещено RaZEr 01-12-2004 в 16:42:

quote:
Повторюсь! Мне нужно зная value выбрать элемент!
Если руки из того места, то работает mySelectElement.value = "value of needed option";

__________________
The time was broken ...


Помещено he][es 01-12-2004 в 22:08:

Если честно то я не догоняю немного...
Но с этим я справился. Можно по поводу глюка вышеописанного что нить сделать?

__________________
Админ - вождь Апачей...


Помещено RaZEr 01-12-2004 в 22:16:

Если дело действительно в alert'е, то вызови последнюю ф-ию через setTimeout(). В IE бывают глюки, когда он не доделав что-то одно начинает делать другое и получаются конфликты.

__________________
The time was broken ...


Помещено he][es 02-12-2004 в 07:15:

RaZEr пасиба большое, попробую...

__________________
Админ - вождь Апачей...


Формат времени GMT. Текущее время 13:37.
Показаны 13 сообщений на этой странице

Powered by: vBulletin Version 2.2.4
Copyright © Jelsoft Enterprises Limited 2000, 2001.