У меня есть два следующих поля выбора
<select id = "first" onchange = "hideShowOptions(this.value)">
<option value = "1">1</option>
<option value = "2">2</option>
<option value = "3">3</option>
<option value = "4">4</option>
</select>
а также
<select id = "second" >
<option value = "5">5</option>
<option value = "6">6</option>
<option value = "7">7</option>
<option value = "8">8</option>
</select>
и следующий мой сценарий
function hideShowOptions(selectedValue) {
if (selectedValue == 1 || selectedValue == 2 || selectedValue == 3) {
$('#second').children('option[value = "8"]').css('display','none');
} else {
$('#second').children('option[value = "8"]').css('display','inline');
}
}
Он правильно устанавливает style = "display: none" в соответствии с приведенным выше кодом, но этот параметр не скрыт от пользовательского интерфейса, и я все еще могу его увидеть.
Цель состоит в том, чтобы скрыть определенную опцию из выбора second на основе значения, выбранного из выбора first.
Я бы рекомендовал вам вместо этого установить атрибут disabled, чтобы он работал во всех браузерах. Или создайте копию вашего выбора и удалите фактический <option> из DOM.
@GaryThomas, у меня не сработало
@gugateider, пожалуйста, дайте дополнительную информацию, если возможно.
одна минута, поменяю ваш код за вас
@gugateider конечно, большое спасибо
Возможный дубликат Скрыть параметры в списке выбора с помощью jQuery
@gugateider Большое спасибо. это решило мою проблему.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Ниже приводится ответ: любезно предоставлено gugateider.
function hideShowOptions(selectedValue){
if (selectedValue == 1 || selectedValue == 2 || selectedValue == 3)
{
$('#second').children('option[value = "8"]').attr('disabled', ''); // if doesn't support will just disable
// $('#second').children('option[value = "8"]').hide(); // if supports will hide
}else{
$('#second').children('option[value = "8"]').removeAttr('disabled'); // if doesn't support will just enable
//$('#second').children('option[value = "8"]').show(); // if it supports, it will display
}
}
<select id = "first" onchange = "hideShowOptions(this.value)">
<option value = "1">1</option>
<option value = "2">2</option>
<option value = "3">3</option>
<option value = "4">4</option>
</select>function hideShowOptions(x) {
var hideTrigger = [1, 2 ,3];
switch (x){
case hideTrigger[0].toString():
$('#second').children('option[value = "8"]').css('display','none');
break;
case hideTrigger[1].toString():
$('#second').children('option[value = "8"]').css('display','none');
break;
case hideTrigger[2].toString():
$('#second').children('option[value = "8"]').css('display','none');
break;
default:
$('#second').children('option[value = "8"]').css('display','block');
}
}<script src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id = "first" onchange = "hideShowOptions(this.value)">
<option value = "1">1</option>
<option value = "2">2</option>
<option value = "3">3</option>
<option value = "4">4</option>
</select>
<select id = "second" >
<option value = "5">5</option>
<option value = "6">6</option>
<option value = "7">7</option>
<option value = "8">8</option>
</select>Вы должны объяснить свой ответ. Ознакомьтесь с нашим Кодексом поведения: stackoverflow.com/conduct
Возможный дубликат: stackoverflow.com/questions/1271503/…