#javascript #jquery
#javascript #jquery ( jquery )
Вопрос:
Я создал <select>
число от 1 до 5 и , основываясь на выбранном мною числе , хотел бы показать другое <select>
.
Например, у меня есть поле выбора дочерних элементов от 1 до 5 и выберите 5 с указанием возраста каждого отдельного дочернего элемента. Если вы выберете 3 ребенка, я хочу, чтобы появилось 3 поля для выбора индивидуального возраста каждого ребенка.
Я создал следующий код, но он не работает. Можете ли вы помочь мне понять, что я сделал не так? Спасибо
$(document).ready(function() {
var valore = $('#bimbi').val();
if (valore == 1) {
$("#etbimbo1").slideDown();
}
if (valore == 2) {
$("#etbimbo1").slideDown();
$("#etbimbo2").slideDown();
}
if (valore == 3) {
$("#etbimbo1").slideDown();
$("#etbimbo2").slideDown();
$("#etbimbo3").slideDown();
}
if (valore == 4) {
$("#etbimbo1").slideDown();
$("#etbimbo2").slideDown();
$("#etbimbo3").slideDown();
$("#etbimbo4").slideDown();
}
});
#etbimbo1,
#etbimbo2,
#etbimbo3,
#etbimbo4 {
display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<div id="flip">
<select name="bambini" id="bimbi">
<option value="1" id="bmb1">1</option>
<option value="2" id="bmb2">2</option>
<option value="3" id="bmb3">3</option>
<option value="4" id="bmb4">4</option>
</select>
</div>
<select name="bambini" id="etbimbo1" class="bm">
<option value="bimbo1" id="bmb1">0-5 anni(1)</option>
<option value="bimbo2" id="bmb2">6-12 anni</option>
</select>
<select name="bambini" id="etbimbo2" class="bm">
<option value="bimbo1" id="bmb1">0-5 anni(2)</option>
<option value="bimbo2" id="bmb2">6-12 anni</option>
</select>
<select name="bambini" id="etbimbo3" class="bm">
<option value="bimbo1" id="bmb1">0-5 anni(3)</option>
<option value="bimbo2" id="bmb2">6-12 anni</option>
</select>
<select name="bambini" id="etbimbo4" class="bm">
<option value="bimbo1" id="bmb1">0-5 anni()</option>
<option value="bimbo2" id="bmb2">6-12 anni</option>
</select>
Комментарии:
1. что вы подразумеваете под слайдом? Вы хотите сделать
select
видимым на основе того, какое число вы выбираете в первом выпадающем списке?2. Точнее, я хочу показать выбор в зависимости от количества дочерних элементов
Ответ №1:
Вам нужно привязать свой код к change
событию select
, чтобы он выполнялся при выборе опции:
$(document).ready(function() {
$('#bimbi').on('change', e => {
var valore = parseInt($(e.target).val(), 10) || 0;
if (valore == 1) {
$("#etbimbo1").slideDown();
}
if (valore == 2) {
$("#etbimbo1").slideDown();
$("#etbimbo2").slideDown();
}
if (valore == 3) {
$("#etbimbo1").slideDown();
$("#etbimbo2").slideDown();
$("#etbimbo3").slideDown();
}
if (valore == 4) {
$("#etbimbo1").slideDown();
$("#etbimbo2").slideDown();
$("#etbimbo3").slideDown();
$("#etbimbo4").slideDown();
}
});
});
#etbimbo1,
#etbimbo2,
#etbimbo3,
#etbimbo4 {
display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<div id="flip">
<select name="bambini" id="bimbi">
<option value="1" id="bmb1">1</option>
<option value="2" id="bmb2">2</option>
<option value="3" id="bmb3">3</option>
<option value="4" id="bmb4">4</option>
</select>
</div>
<select name="bambini" id="etbimbo1" class="bm">
<option value="bimbo1" id="bmb1">0-5 anni(1)</option>
<option value="bimbo2" id="bmb2">6-12 anni</option>
</select>
<select name="bambini" id="etbimbo2" class="bm">
<option value="bimbo1" id="bmb1">0-5 anni(2)</option>
<option value="bimbo2" id="bmb2">6-12 anni</option>
</select>
<select name="bambini" id="etbimbo3" class="bm">
<option value="bimbo1" id="bmb1">0-5 anni(3)</option>
<option value="bimbo2" id="bmb2">6-12 anni</option>
</select>
<select name="bambini" id="etbimbo4" class="bm">
<option value="bimbo1" id="bmb1">0-5 anni()</option>
<option value="bimbo2" id="bmb2">6-12 anni</option>
</select>
Сделав еще один шаг, вы можете улучшить код, создав цикл, который повторяется N раз для выбранного количества дочерних элементов и клонирует select:
$(document).ready(function() {
$('#bimbi').on('change', e => {
var valore = parseInt($(e.target).val(), 10) || 0;
$('select.bm:visible').remove();
for (var i = 0; i < valore; i ) {
$('.bm-template').clone().removeClass('bm-template').insertAfter(e.target);
}
});
});
.bm-template {
display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<div id="flip">
<select name="bambini" id="bimbi">
<option value="1" id="bmb1">1</option>
<option value="2" id="bmb2">2</option>
<option value="3" id="bmb3">3</option>
<option value="4" id="bmb4">4</option>
</select>
</div>
<select name="bambini" class="bm bm-template">
<option value="bimbo1">0-5 anni(1)</option>
<option value="bimbo2">6-12 anni</option>
</select>
Комментарии:
1. Я не могу повторить это — он отлично работает во фрагменте, который я предоставил в вопросе.
2. Хорошо, я должен начать учебные циклы, я не умею работать с кодом, я начал изучать его 6 месяцев назад
3. С циклом, если я вставлю много людей, код будет таким же, это правда?
Ответ №2:
Попробуйте это:
$('#bimbi').change(function() {
var valore = $('#bimbi').val();
if (valore == 1) {
$("#etbimbo2").slideUp();
$("#etbimbo3").slideUp();
$("#etbimbo4").slideUp();
$("#etbimbo1").slideDown();
}
if (valore == 2) {
$("#etbimbo3").slideUp();
$("#etbimbo4").slideUp();
$("#etbimbo1").slideDown();
$("#etbimbo2").slideDown();
}
if (valore == 3) {
$("#etbimbo4").slideUp();
$("#etbimbo1").slideDown();
$("#etbimbo2").slideDown();
$("#etbimbo3").slideDown();
}
if (valore == 4) {
$("#etbimbo1").slideDown();
$("#etbimbo2").slideDown();
$("#etbimbo3").slideDown();
$("#etbimbo4").slideDown();
}
});
#etbimbo1,
#etbimbo2,
#etbimbo3,
#etbimbo4 {
display: none;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="flip">
<select name="bambini" id="bimbi">
<option value="1" id="bmb1">1</option>
<option value="2" id="bmb2">2</option>
<option value="3" id="bmb3">3</option>
<option value="4" id="bmb4">4</option>
</select>
</div>
<select name="bambini" id="etbimbo1" class="bm">
<option value="bimbo1" id="bmb1">0-5 anni(1)</option>
<option value="bimbo2" id="bmb2">6-12 anni</option>
</select>
<select name="bambini" id="etbimbo2" class="bm">
<option value="bimbo1" id="bmb1">0-5 anni(2)</option>
<option value="bimbo2" id="bmb2">6-12 anni</option>
</select>
<select name="bambini" id="etbimbo3" class="bm">
<option value="bimbo1" id="bmb1">0-5 anni(3)</option>
<option value="bimbo2" id="bmb2">6-12 anni</option>
</select>
<select name="bambini" id="etbimbo4" class="bm">
<option value="bimbo1" id="bmb1">0-5 anni()</option>
<option value="bimbo2" id="bmb2">6-12 anni</option>
</select>
Комментарии:
1. Хорошо, но если я поменяю 4 человека, а после того, как я поменяю 2 человека, код не будет функционировать