la búsqueda teniendo en cuenta los dos select y en teoría podría también escribir un texto y además tener seleccionados un select dependiente y el de provincias y que me busque el texto en los elementos que coincidan con los dos select, pero esto sólo funciona con el select de provincias con los otros tres no.
Este es el código que he hecho, en él defino todos los posibles estados de todos los select, el primero seleccionado y los demás no, los dos primeros seleccionados y los demas no, etc. y según lo que esté seleccionado hago la búsqueda, pero no termina de funcionar bien y no me convence como ha quedado, pero mis conocimientos en javascript son muy limitados, así que espero me podáis echar una mano a mejorar el código
Código Javascript:
Ver original
function busqueda(){ var cadena=txtBuscar.value.toLowerCase(); var cadenaPro = listaProv.options[listaProv.selectedIndex].value.toLowerCase(); var cadenaCat = listaCat.options[listaCat.selectedIndex].value.toLowerCase(); var cadenaSubCat1 = listaSubCat1.options[listaSubCat1.selectedIndex].value.toLowerCase(); var cadenaSubCat2 = listaSubCat2.options[listaSubCat2.selectedIndex].value.toLowerCase(); var n = datos.length; nombre = []; for (var i=0;i<n;i++) { var datosProvincia = datos[i][8].toLowerCase().indexOf(cadenaPro)>=0; var datosCategoria = datos[i][0].toLowerCase().indexOf(cadenaCat)>=0; var datosSubCat1 = datos[i][1].toLowerCase().indexOf(cadenaSubCat1)>=0; var datosSubCat2 = datos[i][2].toLowerCase().indexOf(cadenaSubCat2)>=0; buscaren = reemplazaAcentos(datos[i][3]) txtBuscado = reemplazaAcentos(cadena) if (txtBuscar.value == textoBusqueda){ if ( cadenaPro !=0 && cadenaCat ==0 && cadenaSubCat1 ==0 ) if (datosProvincia && datosCategoria) { nombre.push(datos[i]); } if ( cadenaPro !=0 && cadenaCat !=0 && cadenaSubCat1 ==0 ) if (datosCategoria && datosProvincia) { nombre.push(datos[i]); } if ( cadenaPro ==0 && cadenaCat !=0 && cadenaSubCat1 ==0 ) if (datosCategoria) { nombre.push(datos[i]); } if ( cadenaPro !=0 && cadenaCat !=0 && cadenaSubCat1 !=0 && cadenaSubCat2 ==0 ) if (datosSubCat1 && datosProvincia) { nombre.push(datos[i]); } if ( cadenaPro ==0 && cadenaCat !=0 && cadenaSubCat1 !=0 && cadenaSubCat2 ==0 ) if (datosSubCat1) { nombre.push(datos[i]); } if ( cadenaPro !=0 && cadenaCat !=0 && cadenaSubCat1 !=0 && cadenaSubCat2 !=0) if (datosSubCat2 && datosProvincia) { nombre.push(datos[i]); } if ( cadenaPro ==0 && cadenaCat !=0 && cadenaSubCat1 !=0 && cadenaSubCat2 !=0) if (datosSubCat2) { nombre.push(datos[i]); } }else if (buscaren.toLowerCase().indexOf(txtBuscado)>=0 && datosProvincia && datosCategoria && datosSubCat1 && datosSubCat2) { nombre.push(datos[i]); } } txtResultados.innerHTML=nombre.length; mostrarResultados(0); }
Código HTML:
Ver original
<form name="AdminForm2"> <select name="despleCategorias" id="despleCategorias" onChange="cambia_subCat1()" > </select> <select name="despleSubCat1" id="despleSubCat1" onChange="cambia_subCat2()" size="1"> </select> <select name="despleSubCat2" id="despleSubCat2" size="1"> </select> </form> <select id="despleProvincias"> </select>