Cita:
Iniciado por Karen_mBrK Pero al hacerlo como sugieres, te comento (nuevamente) que no me respeta el filtrado ni la selección del primer select.
Si no seleccionas como te sugeri los 3 campos, no te va a funcionar.
Código PHP:
Ver original<?php
require_once('Connections/HD.php');
$categorias = mysql_query("select id_cat id_categoria, categoria descripcion from categorias"); $sub_categorias = mysql_query ("select id_cat id_categoria, id_sub id_sub_categoria, subcategoria descripcion from subcategorias"); ?>
<form id="form1" name="form1" method="post">
<select name="categoria" id="categoria">
<option selected="selected">Seleccione una categoria</option>
<?php
echo "<option value=\"$categoria[id_categoria]\">$categoria[descripcion]</option>";
?>
</select>
<select name="subcategoria" id="subcategoria">
<option selected="selected" data-categoria="0">Seleccione una sub-categoria</option>
<?php
echo "<option value=\"$sub_categoria[id_sub_categoria]\" data-categoria=\"$sub_categoria[id_categoria]\">$sub_categoria[descripcion]</option>";
?>
</select>
</form>
<script>
function updateSubCategorias()
{
var s_categorias = document.querySelectorAll("#subcategoria option");
var categoria_actual = document.getElementById("categoria").value;
for(var nro=0; nro < s_categorias.length; nro++)
{
var categoria = s_categorias[nro].getAttribute("data-categoria");
if(categoria == 0 || categoria == categoria_actual)
s_categorias[nro].style.display = 'block';
else
s_categorias[nro].style.display = 'none';
}
}
document.getElementById("categoria").addEventListener("change", updateSubCategorias);
updateSubCategorias();
</script>