Чистый Javascript
При использовании чистого Javascript вам придется циклически просматривать каждую опцию и проверять ее значение отдельно.
// Get all options within <select id='foo'>...</select>
var op = document.getElementById("foo").getElementsByTagName("option");
for (var i = 0; i < op.length; i++) {
// lowercase comparison for case-insensitivity
(op[i].value.toLowerCase() == "stackoverflow")
? op[i].disabled = true
: op[i].disabled = false ;
}
Без включения нецелевых элементов:
// Get all options within <select id='foo'>...</select>
var op = document.getElementById("foo").getElementsByTagName("option");
for (var i = 0; i < op.length; i++) {
// lowercase comparison for case-insensitivity
if (op[i].value.toLowerCase() == "stackoverflow") {
op[i].disabled = true;
}
}
JQuery
С помощью jQuery вы можете сделать это одной строкой:
$("option[value='stackoverflow']")
.attr("disabled", "disabled")
.siblings().removeAttr("disabled");
Без включения нецелевых элементов:
$("option[value='stackoverflow']").attr("disabled", "disabled");
Обратите внимание, что не без учета регистра. «StackOverflow» не будет равняться «stackoverflow». Чтобы получить нечувствительное к регистру совпадение, вам придется циклически перебирать каждое из них, преобразовывать значение в нижний регистр, а затем проверять это:
$("option").each(function(){
if ($(this).val().toLowerCase() == "stackoverflow") {
$(this).attr("disabled", "disabled").siblings().removeAttr("disabled");
}
});
Без включения нецелевых элементов:
$("option").each(function(){
if ($(this).val().toLowerCase() == "stackoverflow") {
$(this).attr("disabled", "disabled");
}
});