Итак, у меня есть этот выпадающий список, который динамически получает данные из базы данных, и вот как я получаю информацию:
function buscarHist(fgshgdjhgfgffjtfj){
$('.divHist').show();
$('#down').html('');
$.getJSON("./php/obtenerDatos.php",{IDA:fgshgdjhgfgffjtfj}, function(data){
var enca = Object.keys(data[0]);
// console.log(enca);
$.each(enca,function(i,item){
console.log(enca);
// $('#catalogos').append(item)
$('#down').append('<option value ="' + data[0][item] + '" > '+ item +' </option>')
// console.log(item)
});
});
Внутри ./php/obtenerDatos.php это фрагмент кода
<?php
session_start();
include('../../includes/dbconnect.php');
$Q = new Util();
$BD = new Util();
$BUSQUEDA = array();
$ESC = isset($_SESSION['ESCUELA']) ? $_SESSION['ESCUELA'] : "";
$USR = isset($_SESSION['login_user']) ? $_SESSION['login_user'] : "";
$contentType = isset($_SERVER["CONTENT_TYPE"]) ? trim($_SERVER["CONTENT_TYPE"]) : '';
if($contentType === "application/json") {
$content = trim(file_get_contents("php://input"));
$PARAMS = json_decode($content, FALSE);
if(is_object($PARAMS)) {
}
}else{
// $OPC = isset($_GET['OPC']) ? $_GET['OPC'] ;
// if($OPC == "1"){
$ID_USR = $_GET['IDA'];
$Q = $BD->consulta("
SELECT * FROM DATOS_BASICOS WHERE ID_USR = '$ID_USR'
");
// $Q = $BD->consulta("CALL SP_SMS_ALUMNOS(1, '$CURP');");
while($O = mysqli_fetch_object($Q)){
array_push($BUSQUEDA, $O);
}
ECHO json_encode($BUSQUEDA,JSON_UNESCAPED_UNICODE);
if($BD->con->error != '')ECHO $BD->con->error;
// }
}
Все работает нормально, но я должен добавить какой-то список в другой зависимый выпадающий список, и я использую операторы switch, которые не работают
это мой код, и по некоторым причинам он не вносит никаких изменений, это мой желаемый результат, но, очевидно, я не буду использовать жестко закодированный параметр внутри значения и меток, это то, что я получаю из базы данных
$(document).ready(function() {
var AFIRMACIONES = [{
display: "NO",
value: "0"
},
{
display: "SI",
value: "1"
}
];
var AFIRMACIONES2 = [{
display: "SI",
value: "1"
},
{
display: "NO",
value: "0"
}
];
var AFIRMACIONES3 = [{
display: "CASADO",
value: "1"
},
{
display: "SOLTERO",
value: "2"
},
{
display: "VIUDO",
value: "3"
}
];
// $(document).ready(function() {
getSelectData($("#down"));
$('#txtnombre').val($('#child_selection').children(':selected').text())
// });
$("#down").change(function() {
getSelectData($(this));
});
function getSelectData(el) {
console.clear();
var $option = el.find("option:selected");
var text = $option.text();
console.log(text);
switch (text) {
case "PESO":
list(AFIRMACIONES);
break;
case "ZURDO":
list(AFIRMACIONES2);
break;
case "EDO_CIVIL":
list(AFIRMACIONES3);
break;
default:
$("#child_selection").html("");
break;
}
}
function list(array_list) {
console.log(array_list);
$("#child_selection").html("");
$(array_list).each(function(i) {
$("#child_selection").append(
'<option value="' + array_list[i].value + '">' + array_list[i].display + "</option>"
);
});
$('#txtnombre').val($('#child_selection').children(':selected').text())
}
$('#child_selection').change(function() {
$('#txtnombre').val($(this).children(':selected').text())
//$("#txtnombre").hide();
// }
})
});
This is an example of the desired result but it seems its only working when I put the values and labels on my dropdown and as I said I must return this info from my database .. do am i missing something?
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select id="down">
<option value="1">PESO</option>
<option value="2">ZURDO</option>
<option value="3">EDO_CIVIL</option>
</select>
<select name="child_selection" id="child_selection">
</select>
<input id="txtnombre" type="text" class="form-control autofocus form-control-round F1" placeholder="SIN INFORMACION" />
<input id="txtnombre2" type="text" style="visibility:hidden" class="form-control autofocus form-control-round F1" placeholder="SIN INFORMACION" />
Это мой HTML реальный код, обратите внимание, что приведенный выше фрагмент приведен только как ССЫЛКА, потому что там я не использую никакую базу данных
</div>
<div class="card-block">
<div class="table-responsive">
<table class="table table-responsive-sm table-striped table-xs table-hover">
<thead>
</thead>
<select name="down" id="down" >
</select>
<select name="child_selection" id="child_selection">
</select>
<input id="txtnombre" type="text" class="form-control autofocus form-control-round F1" placeholder="SIN INFORMACION"/>
<input id="txtnombre2" type="text" style="visibility:hidden" class="form-control autofocus form-control-round F1" placeholder="SIN INFORMACION"/>
</script>
<div class="col-sm-4">
<button id="btnGuardar" class="btn waves-effect waves-light btn-primary btn-block"><i class="ti ti-save"></i> Guardar</button>
</div>
</table>
</div>
</div>
</div>
а это мой JS ФАЙЛ:
$('#down').change(function(){
//$('#txtnombre').val($(this).val())
$('#txtnombre').val($(this).val());
// var mivalor = $('#txtnombre').val()
})
}
$(document).ready(function() {
var AFIRMACIONES = [
{display: "NO", value: "0" },
{display: "SI", value: "1" }
];
var AFIRMACIONES2 = [
{display: "SI", value: "1" },
{display: "NO", value: "0" }
];
var AFIRMACIONES3 = [
{display: "SOLTERO(A)", value: "1" },
{display: "CASADO", value: "2" },
{display: "UNION LIBRE", value: "3" },
];
// $(document).ready(function() {
getSelectData($("#down2"));
// });
$("#down2").change(function() {
getSelectData($(this));
});
function getSelectData(el) {
console.clear();
var $option = el.find("option:selected");
var text = $option.text();
console.log(text);
switch (text) {
case "PESO":
list(AFIRMACIONES);
break;
case "ZURDO":
list(AFIRMACIONES2);
break;
case "EDO_CIVIL":
list(AFIRMACIONES3);
break;
default:
$("#child_selection").html("");
break;
}
}
function list(array_list) {
$("#child_selection").html("");
$(array_list).each(function(i) {
$("#child_selection").append(
'<option value="' + array_list[i].value + '">' + array_list[i].display + "</option>"
);
});
}
});
$(function() {
var
jqDdl = $('#down'),
onChange = function(event) {
if ($(this).val() === '1') {
$('#txtnombre').hide();
$('#txtnombre').focus().select();
}
else if ($(this).val() === '0') {
$('#txtnombre').hide();
$('#txtnombre').focus().select();
}
else {
$('#txtnombre').show();
}
};
onChange.apply(jqDdl.get(0));
jqDdl.change(onChange);
});