Как я могу отключить <опция> в <выбор> на основе его значения в JavaScript?

У меня есть a <select> со многими <option>s. У каждого есть уникальное значение. Я должен отключить <option> с данным определенным значением (не innerhtml).

У кого-либо есть идея как?

41
задан Whitewall 2 May 2012 в 03:22
поделиться

1 ответ

Чистый 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");
  }
});
77
ответ дан 27 November 2019 в 00:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: