Если выбран последний выпадающий список, то показать поле ввода

#jquery

#jquery

Вопрос:

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

 jQuery('select#dropdown').change(function () {
if ($('select#dropdown option:last').attr("selected", "selected")) {
	$('#otherBox').show();
} else {
$('#otherBox').hide();	
}
});  
 #otherBox {
display: none;
}  
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
<select id="dropdown">
<option>Test</option>
<option>Test2</option>
<option>Other</option>
</select>

<div id="otherBox">
test
</div>  

Комментарии:

1. Обратите внимание, что многие свойства , такие как selected, не отражаются в атрибутах при изменении пользователем. Также вы if() фактически устанавливаете атрибут. Другим хорошим примером является value

Ответ №1:

Этот код использует переключатель для скрытия / отображения в зависимости от того, выбран ли последний параметр.

поиск выполняет поиск дочерних элементов, возвращает логическое значение и:выбрано определяет, выбран ли параметр или нет

Для attr при передаче двух значений вы фактически устанавливаете attr (первое значение) на второе значение. Таким образом, ваш оператор if на самом деле не проверяет его, вместо этого он всегда устанавливает последний параметр как выбранный.

 jQuery('select#dropdown').change(function () {
$('#otherBox').toggle($(this).find("option:last").is(":selected"));	
});  
 #otherBox {
display: none;
}  
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
<select id="dropdown">
<option>Test</option>
<option>Test2</option>
<option>Other</option>
</select>

<div id="otherBox">
test
</div>  

Ответ №2:

может быть, это вам поможет.

 jQuery('select#dropdown').change(function () {
var checkOther = $('select#dropdown').val();
if ( checkOther == 'other' ) {
	$('#otherBox').show();
} else {
$('#otherBox').hide();	
}
});  
 #otherBox {
display: none;
}  
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select id="dropdown">
<option value='Test'>Test</option>
<option value='Test2'>Test2</option>
<option value='other'>Other</option>
</select>

<div id="otherBox">
test
</div>  

Комментарии:

1. Первоначальный вопрос был задан не на основе ценности.

2. Я думаю, что это была не ваша забота. а без ценности это просто витрина. Избегайте подобного поведения.