// ### FUNCIONES AJAX (con JQUERY) ### /* Funcion para mostrar las diferentes medidas en funcion del material elegido en la página de Baldosas Cerámicas */ $(document).ready(function(e) { function ajaxMedidas(id_mat){ $.ajax({ // la URL para la petición url : 'php/contenidos/medidas.php', // la información a enviar // (también es posible utilizar una cadena de datos) data : { mat_id : id_mat }, // especifica si será una petición POST o GET type : 'POST', // el tipo de información que se espera de respuesta dataType : 'text', // código a ejecutar si la petición es satisfactoria; // la respuesta es pasada como argumento a la función success : function(respuesta) { $('#sect_indice_medidas').stop().hide().html(respuesta).fadeIn(800); footerForzado(); // Obtenemos el valor id_med de la primera de las medidas que coinciden con este material y lo asignamos el objeto var id_med_primera = respuesta.match("id='med_(.*)'>")[1]; muestraSelec.idmedida = id_med_primera; }, // código a ejecutar si la petición falla; // son pasados como argumentos a la función // el objeto de la petición en crudo y código de estatus de la petición error : function(xhr, status) { console.log('Error en la ejecución de AJAX. (ajaxMedidas)'); }, // código a ejecutar sin importar si la petición falló o no complete : function(xhr, status) { //alert('Petición realizada'); } }); } function ajaxModelos(id_mat,id_med){ $.ajax({ // la URL para la petición url : 'php/contenidos/modelos.php', // la información a enviar // (también es posible utilizar una cadena de datos) data : { mat_id : id_mat , med_id : id_med }, // especifica si será una petición POST o GET type : 'POST', // el tipo de información que se espera de respuesta dataType : 'text', // código a ejecutar si la petición es satisfactoria; // la respuesta es pasada como argumento a la función success : function(respuesta) { $('#sect_indice_modelos').stop().hide().html(respuesta).fadeIn(800); footerForzado(); }, // código a ejecutar si la petición falla; // son pasados como argumentos a la función // el objeto de la petición en crudo y código de estatus de la petición error : function(xhr, status) { console.log('Error en la ejecución de AJAX. (ajaxModelos)'); }, // código a ejecutar sin importar si la petición falló o no complete : function(xhr, status) { //alert('Petición realizada'); } }); } function colorearItemMenu(ident,clase){ //$("."+clase).css({"background-color":"rgba(0,0,0,0)","color":"rgba(0,0,0,1)"}); //$(clase).css({"background-color":"inherit","color":"inherit"}); $(clase).attr("style",""); $(ident).css({"background-color":"rgba(195,37,31,1)","color":"rgba(255,255,255,1)"}); } function colorearMaterial(identMat,claseMat){ //$(claseMat).css({"background-color":"rgba(55,55,55,0.65)","color":"rgba(255,255,255,1)"}); $(claseMat).attr("style",""); $(identMat).css({"background-color":"rgba(195,37,31,1)","color":"rgba(255,255,255,1)"}); } function colorearMedida(identMed,claseMed){ //$(claseMed).css({"background-color":"rgba(55,55,55,0.65)","color":"rgba(255,255,255,1)"}); $(claseMed).attr("style",""); $(identMed).css({"background-color":"rgba(195,37,31,1)","color":"rgba(255,255,255,1)"}); } // Creamos una nueva instancia (nuevo objeto) de la clase 'Muestra' que almacenará los datos id_mat e id_med que vayamos seleccionando muestraSelec = new Muestra (); $(".material").click(function(e) { var id_mat = $(this).attr("id"); id_mat = id_mat.substr(id_mat.indexOf("_")+1); var clase = ".hd_menu_item_mat"; var ident = "#hd_menu_item_mat_"+id_mat; var claseMat = ".material .mat_categoria"; var identMat = "#mat_"+id_mat+" .mat_categoria"; // Le asignamos al objeto muestraSelec el valor de id_mat que hemos seleccionado muestraSelec.idmaterial = id_mat; colorearMaterial(identMat,claseMat); colorearItemMenu(ident,clase); $('#sect_indice_modelos').html(""); footerForzado(); ajaxMedidas(muestraSelec.idmaterial); }); $(".hd_menu_item_mat").click(function(e) { var id_mat = $(this).attr("id"); id_mat = id_mat.substr(id_mat.lastIndexOf("_")+1); var clase = "."+$(this).attr("class"); var ident = "#"+$(this).attr("id"); var claseMat = ".material .mat_categoria"; var identMat = "#mat_"+id_mat+" .mat_categoria"; // Le asignamos al objeto muestraSelec el valor de id_mat que hemos seleccionado muestraSelec.idmaterial = id_mat; colorearMaterial(identMat,claseMat); colorearItemMenu(ident,clase); $('#sect_indice_modelos').html(""); footerForzado(); ajaxMedidas(muestraSelec.idmaterial); }); /*Tenemos que utilizar el evento on('click','.medida',...) porque los elementos con class='medida' son creados dinámicamente, es decir, no existen cuando se carga inicialmente la página */ //Funciona ejecutando el evento on() sobre el div que contiene a los elementos con class='medida' $("#sect_indice_medidas").on('click',".medida",function(){ var id_med = $(this).attr("id"); id_med = id_med.substr(id_med.indexOf("_")+1); var claseMed = ".medida .med_categoria"; var identMed = "#med_"+id_med+" .med_categoria"; // Le asignamos al objeto muestraSelec el valor de id_med que hemos seleccionado muestraSelec.idmedida = id_med; colorearMedida(identMed,claseMed); ajaxModelos(muestraSelec.idmaterial , muestraSelec.idmedida); }); }); /* Funcion para mostrar los resultados en tiempo real en el BUSCADOR RÁPIDO */ $(document).ready(function(e) { function ajaxBuscador(texto){ $.ajax({ // la URL para la petición url : 'php/contenidos/buscador.php', // la información a enviar // (también es posible utilizar una cadena de datos) data : { textobusc : texto }, // especifica si será una petición POST o GET type : 'POST', // el tipo de información que se espera de respuesta dataType : 'text', // código a ejecutar si la petición es satisfactoria; // la respuesta es pasada como argumento a la función success : function(respuesta) { $('#hc_busc_resultados').html(respuesta); // Obtenemos el valor id_med de la primera de las medidas que coinciden con este material y lo asignamos el objeto //var id_med_primera = respuesta.match("id='med_(.*)'>")[1]; //muestraSelec.idmedida = id_med_primera; }, // código a ejecutar si la petición falla; // son pasados como argumentos a la función // el objeto de la petición en crudo y código de estatus de la petición error : function(xhr, status) { console.log('Error en la ejecución de AJAX. (ajaxBuscador)'); }, // código a ejecutar sin importar si la petición falló o no complete : function(xhr, status) { //alert('Petición realizada'); } }); } $("#hc_divbuscadortext input").keyup(function(e) { var texto = $(this).val(); ajaxBuscador(texto); // Condicional para que al pulsar enter pase a la página de Búsqueda Avanzada llevando el texto en GET if(e.keyCode == 13) { window.location.href = "index.php?pag=busqavanzada&txt="+texto; } }); }); /* Funcion para mostrar los diferentes materiales en funcion del producto elegido en la página de BÚSQUEDA AVANZADA */ $(document).ready(function(e) { // Creamos una nueva instancia (nuevo objeto) de la clase 'Buscador' que almacenará los criterios y datos de la búsqueda objB = new Buscador (); // Cuando la página carga hay que comprobar si hay un valor en el campo de texto y en ese caso lanzar la búsqueda if($("#bsqav_cab_buscadortext").val() != ""){ objB.texto = $("#bsqav_cab_buscadortext").val(); objB.buscar(); } // EVENTO change en los filtros: para los checkbox de los filtros. $(".filtro_items").on('change', "input[type='checkbox']" , function() { /* El evento tiene que lanzarse de nuevo con la funcion on() delegando al contenedor porque hay elementos creados por jQuery dinámicamente. */ var id_elemento = $(this).attr("value").substr(3); var id_filtro = $(this).attr("name").substr(7); var id_filtro_target = parseInt(id_filtro) + 1; // Almacenamos todos los elementos checkeados en los filtros y luego actualizamos el actual // Nota: Comprobamos especialmente si el attr("value") es undefined para cuando todavía no están abiertos los filtros 2 y 3 for (var i=1; i<4; i++) { var filtro_value = $("input[name='filtro_"+i+"']:checked").attr("value"); if (typeof filtro_value === "undefined") { objB.filtros[i-1] = 0; } else { objB.filtros[i-1] = filtro_value.substr(3); } } // Incluimos una condicion para que cuando cambiemos un filtro, los demás se reinicien en el objeto if (id_filtro == 1) { objB.filtros[1] = 0; objB.filtros[2] = 0; } else if (id_filtro == 2) { objB.filtros[2] = 0; } objB.filtros[parseInt(id_filtro)-1] = $(this).attr("value").substr(3); // Almacenamos el texto a buscar y el criterio de orden objB.texto = $("#bsqav_cab_buscadortext").val(); objB.orden = $("#bsqav_cab_ordenarcombo").val(); // Llamamos al método para abrir los filtros objB.abrirFiltros(id_filtro_target); // Deseleccionamos todos los demás checks del filtro clickado y seleccionamos el actual $("input[name='filtro_"+id_filtro+"']").prop( "checked", false ); $(this).prop( "checked", true ); }); // EVENTO click para el boton de cambio de estilo: para cambiar cómo se muestran los resultados. $(".bsqav_cab_boton").click(function(e) { var id_estilo = $(this).attr("id").substr(16); if (id_estilo != objB.estilo) { objB.estilo = id_estilo; objB.cambiarEstilo(); } }); // EVENTO keyup para el campo de texto. // Limitado para ejecute la búsqueda solo al presionar la tecla enter, no al escribir $("#bsqav_cab_buscadortext").keyup(function(e) { if (e.keyCode == 13) { objB.texto = $("#bsqav_cab_buscadortext").val(); objB.buscar(); } }); // EVENTO click para el botón "Ver más". $("#sect_main_bsqav_cuerpo").on('click', "#boton_vermas" , function() { objB.ampliarResultados(); }); // EVENTO click para el botón "Borrar filtros". $("#sect_filtro").on('click', "#borrar_filtro" , function() { objB.restaurarFiltros(); }); // EVENTO change para el combo de Ordenar $('#bsqav_cab_ordenarcombo').change(function () { objB.orden = $("#bsqav_cab_ordenarcombo").val(); objB.buscar(); }); }); /* Funciones para validar, comprobar, enviar y recargar el FORMULARIO */ $(document).ready(function () { objForm = new Formulario(); // EVENTO click para el botón ENVIAR del formulario $("#form_submit").click(function () { objForm.validador(); }); $(objForm.campos).keyup(function(){ if( $(this).val() != "" ){ $(".leyenda").fadeOut(); return false; } }); // Validador jquery personalizado // Si el validador nos da el ok, enviamos el formulario // Si el envío es correcto mostramos mensaje de aviso (temporal) y recargamos formulario. // Si el envío es incorrecto mostramos mensaje de error (fijo) y NO recargamos formulario. });