У меня есть три заброшенных меню. Каждое раскрывающееся меню заполняется в зависимости от выбора предыдущего выбора. Это означает, что выбор «селектора 2» основан на выборе «селектора 1», в то время как выбор «селектор 3» основан на выборе «селектор 2». Выпадающее меню динамически заполняется с помощью jquery, а источник - из таблицы MySQL.Выпадающее меню jQuery 3 - onChange
Когда я выбираю «селектор 1», он заполняет «селектор 2», и когда я выбираю «селектор 2», он заполняет «селектор 3». Это прекрасно работает. Проблема заключается в том, что если у меня есть «селектор 1», «селектор 2» и «селектор 3», и я меняю «селектор 1», значение «селектор 2» теряется (как это должно быть), но значение «селектор 3» остается там. Я хочу, чтобы значение селектора 3 было сброшено, когда «селектор 1» был изменен и не сохранил старое значение предыдущего старого селектора.
Это мой JQuery
<script src="https://code.jquery.com/jquery-2.1.1.min.js" type="text/javascript"></script>
<script>
function getTertiary(val) {
$.ajax({
type: "POST",
url: "get_tertiary.php",
data:'tertiary_cat='+val,
success: function(data){
$("#tertiary_cat").html(data);
}
});
}
function getSecondary(val) {
$.ajax({
type: "POST",
url: "get_secondary.php",
data:'primary_cat='+val,
success: function(data){
$("#secondary_cat").html(data);
}
});
}
function selectPrimary(val) {
$("#search-box").val(val);
$("#suggesstion-box").hide();
}
</script>
Это мой HTML:
<div class="frmDronpDown">
<div class="row">
<label>Primary:</label><br/>
<select name="primary_cat" id="primary_cat" class="demoInputBox" onChange="getSecondary(this.value);">
<option value="">Select Primary</option>
<?php
foreach($results as $primaryCat) {
?>
<option value="<?php echo $primaryCat["primary_cat"]; ?>"><?php echo $primaryCat["primary_cat"]; ?></option>
<?php
}
?>
</select>
</div>
<div class="row">
<label>Tertiary:</label><br/>
<select name="secondary_cat" id="secondary_cat" class="demoInputBox" onChange="getTertiary(this.value);">
<option value="">Select Seconary</option>
</select>
</div>
<div class="row">
<label>State:</label><br/>
<select name="tertiary_cat" id="tertiary_cat" class="demoInputBox">
<option value="">Select Tertiary</option>
</select>
<input type="text"/>
</div>
</div>
Когда я попробовал - изменить
<select name="primary_cat" id="primary_cat" class="demoInputBox" onChange="getSecondary(this.value);">
к:
<select name="primary_cat" id="primary_cat" class="demoInputBox" onChange="getSecondary(this.value);getTertiary(this.value);">
Я получаю эту ошибку в error_log
PHP Warning: Invalid argument supplied for foreach()
Вы пробовали мое решение. –
это сработало для вас? –
Привет, я просто попробовал это сейчас, и это сработало - все списки заполняются, как они предполагают. У меня новая проблема. Если я изменил первый выбор из первого селектора, второй селектор теряет свое значение (как и должно было быть), хотя третий селектор сохраняет свое значение из предыдущего выбора. Я хочу, чтобы он потерял свою ценность и не сохранил его! – xltmt