Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

91
Vistas
Cómo mostrar/ocultar los elementos correctos con 2 casillas de verificación en jQuery

Tengo dos casillas de verificación para filtrar recetas (almacenadas en una base de datos) en un sitio web. El filtro de alergia OCULTA todas las recetas con la alergia seleccionada pero el filtro de dieta MUESTRA solo las recetas con la dieta seleccionada. (es decir, si el usuario marca la alergia al maní y sin gluten, se ocultarán las recetas con esos filtros). Ambas casillas de verificación funcionan de forma individual, pero si ambas están marcadas, se muestran las recetas incorrectas. Por ejemplo, lo que quiero que suceda es que si el usuario marca la alergia al maní y la dieta vegana, quiero mostrar recetas que no tengan maní y sean veganas. Básicamente, necesito una forma de realizar un seguimiento de las recetas que se muestran en una casilla de verificación y filtrarlas para la otra casilla de verificación.

A continuación se muestra el código que tengo:

 function filterFilesList() { var rows = $('.file-row'); var checkedAllergies = $("#filterControlsAllergies :checkbox:checked"); var checkedDiet = $("#filterControlsDiet :checkbox:checked"); if(checkedAllergies.length && checkedDiet.length){ console.log("both selected"); rows.show(200); var type1 = [] var arr = checkedAllergies.map(function(){ type1.push("." + $(this).val()) }).get(); var type2 = [] var arr = checkedDiet.map(function(){ type2.push("." + $(this).val()) }).get(); //Filter through database and show/hide recipes depending on both checkboxes } else if(checkedAllergies.length){ rows.show(200); var type1 = [] var arr = checkedAllergies.map(function(){ type1.push("." + $(this).val()) }).get(); for (let i = 0; i < type1.length; i++){ $(type1[i]).hide(200); } } else if(checkedDiet.length){ rows.hide(200); var type2 = [] var arr = checkedDiet.map(function(){ type2.push("." + $(this).val()) }).get(); for (let i = 0; i < type2.length; i++){ $(type2[i]).show(200); } } else { rows.show(); } }
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Tienes dos maneras diferentes de resolver este problema.

  1. Verifique la API, use el filtro existente o cree uno nuevo por alergias y dieta.
  2. Filtrar en el lado del cliente. Para hacer esto necesitas:
  • Obtenga una lista de recetas que deben ocultarse por alergia.
  • Obtener recetas por dieta. Muestre recetas de dieta solo si no están en la lista de alergias.

Por favor, compruebe el código a continuación:

 if(checkedAllergies.length && checkedDiet.length){ rows.hide(200); var type1 = [] checkedAllergies.map(function(){ type1.push("." + $(this).val()) }).get(); //let's create set of allergies recipes, that we need to exclude let allergiesSet = new Set(); for(let i=0;i<type1.length;i++){ allergiesSet.add(type1[i]); } var type2 = [] var arr = checkedDiet.map(function(){ type2.push("." + $(this).val()); }).get(); //Filter through database and show/hide recipes depending on both checkboxes for (let i = 0; i < type2.length; i++){ if(!allergiesSet.has(type2[i])) {$(type2[i]).show(200);}; } }

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda