Здесь есть код для продолжения выбора и отключения в любое время.
Прежде всего включите каждый параметр, а затем посмотрите на выбранные значения и отключите параметры, совпадающие с выбранными значениями.
Эти 2 шага имеют решающее значение, поскольку при повторном выборе отключенные значения до будут по-прежнему отключены.
НОВЕЙШАЯ ВЕРСИЯ
Более элегантный способ, в котором мы используем map () ( в stackoverflow, есть хорошее объяснение этого метода ) и функций filter () jquery для выполнения этой работы. Меньше строк, и я думаю, что та же производительность или лучше.
http://www.jsfiddle.net/dactivo/keDDr/
$("select").change(function()
{
$("select option").attr("disabled",""); //enable everything
//collect the values from selected;
var arr = $.map
(
$("select option:selected"), function(n)
{
return n.value;
}
);
//disable elements
$("select option").filter(function()
{
return $.inArray($(this).val(),arr)>-1; //if value is in the array of selected values
}).attr("disabled","disabled");
});
НОВАЯ ВЕРСИЯ
Я отредактировал свой ответ, это моя окончательная версия:
http://www.jsfiddle.net/dactivo/kNbWc/
$("select").change(function()
{
$("select option").attr("disabled",""); //enable everything
DisableOptions(); //disable selected values
});
function DisableOptions()
{
var arr=[];
$("select option:selected").each(function()
{
arr.push($(this).val());
});
$("select option").filter(function()
{
return $.inArray($(this).val(),arr)>-1;
}).attr("disabled","disabled");
}
Старая версия
http://www.jsfiddle.net/AyxL3/
$("select").change(function()
{
$("select option").attr("disabled",""); //enable everything
DisableOptions(); //disable selected values
});
function DisableOptions()
{
$("select option").filter(function()
{
var bSuccess=false; //will be our flag to know it coincides with selected value
var selectedEl=$(this);
$("select option:selected").each(function()
{
if($(this).val()==selectedEl.val())
{
bSuccess=true; //it coincides we will return true;
return false; // this serves to break the each loop
}
});
return bSuccess;
}).attr("disabled","disabled");
}