Очень часто бывает так что необходимо при выборе одного из пунктов селекта, задизеблить некие другие, это можно сделать с помощью яваскрипта.

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

Просьба, мне вообще пофиг на плагиаторов, даже наооборот, берите - пользуйте, вот только если обгрейдживаете, его до лучшего состояния, то просьба выложить его на этот форум, имхо чтоб люди тоже смотрели и пользовались лучшей версией ,)

Вот код
CODE

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Select</title>


<script type="text/javascript">
var selects = [];

onload = function() {
 filter(document.getElementById("sel1"), selects);
}

function filter(sel) {
 var val = sel.options[sel.selectedIndex].value;
 if (selects[sel] == undefined) selects[sel] = [];
 
 switch (val) {
 case '2': disable(["sel2", "sel3"], sel);
  break;
 case '13': disable(["sel3"], sel);
  break;
 default : enabled(sel);
 }
}

function disable(ids, sel) {
 enabled(sel);
 for (var i=0; i<ids.length; i++) {
  var id = ids[i];
  var seldisbl = document.getElementById(id);
  if (seldisbl != null) {
   var selbool = true;
   for (var ii=0; ii<selects[sel].length; ii++) {
    if (selects[sel][ii] == id) selbool = false;
   }
   if (selbool) selects[sel][selects[sel].length] = id;
   seldisbl.disabled = true;
  }
 }
}

function enabled(sel) {
 for (var i=0; i<selects[sel].length; i++) {
  var selenbl = document.getElementById(selects[sel][i]);
  selenbl.disabled = false;
 }
}
</script>



</head>

<body>
<select onChange="filter(this)" onKeyUp="filter(this)" id="sel1">
<option value="3">s1op1</option>
<option value="2">s1op2</option>
<option value="13">s1op3</option>
<option value="1">s1op4</option>
</select>

<select id="sel2">
<option>s2op1</option>
<option>s2op2</option>
<option>s2op3</option>
<option>s2op4</option>
</select>

<select id="sel3">
<option>s2op1</option>
<option>s2op2</option>
<option>s2op3</option>
<option>s2op4</option>
</select>

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



Теперь рассмотрим поподробнее.
Начинается все после события onChange="filter(this)", или onKeyUp="filter(this)" (онкейап нужен для лисы, она неотлавливает ончендж, когда листаеш селект стрелкой на клаве)

Вот.. рассмотрим первую ф-ю function filter(sel)
CODE

function filter(sel) {
 var val = sel.options[sel.selectedIndex].value;
 if (selects[sel] == undefined) selects[sel] = [];
 
 switch (val) {
 case '2': disable(["dvig", "vozr"], sel);
  break;
 case '13': disable(["dvig"], sel);
  break;
 default : enabled(sel);
 }
}

sel - в качестве параметра принимает объект селекта.
val - это ничто иное как валуе (значение, но не текст) селекта sel
selects - конечно плохой тон, но эта глобальная переменная, нужна для хранения в качестве асоциативного массива все айдишники селектов, которые должны быть задизеблины или наоборот при значении этого селекта

if (selects[sel] == undefined) selects[sel] = [];
если такого ключа как этот селект не существует, тогда создаем его

switch (val) тестим значение на нужные нам
если такаво найдено, то вызываем дизабл функцию по задизебливанию иных селектов - disable(ids, sel)**

если нуного значения нет, то раздизеблим все связанные с этим селектом селекты - default : enabled(sel);****

CODE

function disable(ids, sel) {
 enabled(sel);
 for (var i=0; i<ids.length; i++) {
  var id = ids[i];
  var seldisbl = document.getElementById(id);
  if (seldisbl != null) {
   var selbool = true;
   for (var ii=0; ii<selects[sel].length; ii++) {
    if (selects[sel][ii] == id) selbool = false;
   }
   if (selbool) selects[sel][selects[sel].length] = id;
   seldisbl.disabled = true;
  }
 }
}


ids - массив айдишников, объекты которых будут задизаблины
sel - объект селекта иницировавшего событие
enabled(sel)**** для начала раздезеблим все селекты которые связаны с этим селектом.
дальше цикл который проходит по всем айдишникам for (var i=0; i<ids.length; i++)
..и если объект с этим айдишником существует if (seldisbl != null) {, то идет проверка на существование записи этого айди в массиве с ключом sel:
if (selects[sel][ii] == id) selbool = false;
если такого нет, что подозревается по умолчанию selbool = true;
, то оно присваевается ,) (глобально сложная логика, правда ?)))) )
if (selbool) selects[sel][selects[sel].length] = id;

И наконец объект этого айдишника дизеблится
seldisbl.disabled = true;


****enabled(sel)
CODE

function enabled(sel) {
 for (var i=0; i<selects[sel].length; i++) {
  var selenbl = document.getElementById(selects[sel][i]);
  selenbl.disabled = false;
 }
}

Принимает в качестве аргумента объект селекта иницировший событие sel,
дальше проходим по всем объектам с айдишниками в массиве под ключом этого селекта selects[sel][i] и раздизебливаем их

Вот так вот все просто - конечно тут много нехватает, но поверьте мне этого для поставлиных целей хватило, поэтому еще раз напоминаю, кто хочет пусть продолжит данную тему, а решение найдем вместе, если такова будет необходимость ))