Как jQuery изменить второй список выбора на основе опции "Третий список выбора" и второй выбор на основе первого
Почему третий вариант выбора меняется в зависимости от второго. Но когда первый выбор выбран, второй меняется. пока перейти ко второму третьему одно не меняется Это мое мнение.
<select name="select1" select="select1">
<option value="">Select Country</option>
<option value="india">India</option>
<option value="america">America</option>
</select>
<select name="select2" id="select2">
<option value="">Select State</option>
<option data-value="orissa" value="india">Orissa</option>
<option data-value="telangan" value="india">Telangan</option>
<option data-value="america" value="america">USA</option>
<option data-value="america" value="america">California</option>
</select>
<select name="select3" id="select3">
<option value="">Select city</option>
<option value="orissa">Nal</option>
<option value="orissa">Mir</option>
<option value="Telangan">Hyd</option>
<option value="Telangan">Vija</option>
<option value="america">KRK</option>
<option value="america">MRK</option>
</select>
This is my script
<script>
$("#select1").change(function() {
if ($(this).data('options') == undefined) {
$(this).data('options', $('#select2 option').clone());
}
var id = $(this).val();
var options = $(this).data('options').filter('[value=' + id + ']');
$('#select2').html(options);
});
$("#select2").change(function() {
if ($(this).data('options') == undefined) {
$(this).data('options', $('#select3 option').clone());
}
var id = $(this).val();
var options = $(this).data('options').filter('[data-value=' + id + ']');
$('#select3').html(options);
});
</script>
1 ответ
Решение
Select1 не работает, так как в HTML нет атрибута id для select1.
<!-- change -->
<select name="select1" select="select1">
<!-- to -->
<select name="select1" id="select1">
Кроме того, кажется, что существует некоторое несоответствие между значениями данных и значениями параметров.
- стараться сохранить
val
для фактической стоимости опциона иdata-value
для своего предшественника. - Оба эти значения чувствительны к регистру, так
'telangan' !== 'Telangan'
Вот обновленная версия вашего кода:
$("#select1").change(function() {
if ($(this).data('options') == undefined) {
$(this).data('options', $('#select2 option').clone());
}
var id = $(this).val();
var options = $(this).data('options').filter('[data-value=' + id + ']');
$('#select2').html(options).show();
});
$("#select2").change(function() {
if ($(this).data('options') == undefined) {
$(this).data('options', $('#select3 option').clone());
}
var id = $(this).val();
var options = $(this).data('options').filter('[data-value=' + id + ']');
$('#select3').html(options).show();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select name="select1" id="select1">
<option value="">Select Country</option>
<option value="india">India</option>
<option value="america">America</option>
</select>
<select name="select2" id="select2" style="display: none;">
<option value="">Select State</option>
<option data-value="india" value="orissa">Orissa</option>
<option data-value="india" value="telangan">Telangan</option>
<option data-value="america" value="america">USA</option>
<option data-value="america" value="america">California</option>
</select>
<select name="select3" id="select3" style="display: none;">
<option value="">Select city</option>
<option data-value="orissa">Nal</option>
<option data-value="orissa">Mir</option>
<option data-value="telangan">Hyd</option>
<option data-value="telangan">Vija</option>
<option data-value="america">KRK</option>
<option data-value="america">MRK</option>
</select>