//Se generan distintas funciones para cada uno de los niveles de características de los distintos aparatos. //Cada función guarda los arrays de características de cada aparato en sus distintos niveles. //El primer valor de cada array corresponde al nombre del aparato. //El segundo valor de cada array corresponde al título que tomará el combo cuando se exhiba. //El tercer valor corresponde a si existirán nuevos subniveles (1) o se muestra ya el valor numérico de consumo energético (2); //El último valor, cuando no hayan más niveles a filtrar, corresponde a la potencia consumida/hora. //Consumo total: /*function consumoTotal(){ var total = 0; var totalA = 0; var totalB = 0 //Total consumo aparatos por select: $('.resultado').each(function(){ var consumoA = $(this).data('consumo'); totalA = totalA + consumoA; }); //Total consumo aparatos libres: $('.consumo_aparatoL').each(function(){ var consumoB = $(this).val(); consumoB = parseInt(consumoB); totalB = totalB + consumoB; }); //Total absoluto: total = totalA + totalB; return 'Total diario: '+total+'W'; }*/ //Validar formulario: function validaFormContact(){ //Municipio: if(document.frmSolar.municipio.value==''){ alert("Introduce tu municipio"); document.frmSolar.municipio.focus(); return false; } //Grados: if(document.frmSolar.grados_cubierta.value==''){ alert("Introduce los grados de la cubierta"); document.frmSolar.grados_cubierta.focus(); return false; } //Superficie util de tejado/cubierta: if(document.frmSolar.superficie_util.value==''){ alert("Introduce la superfície útil de tejado"); document.frmSolar.superficie_util.focus(); return false; } //Consumo MEDIO mensual en la factura de electricidad: if(document.frmSolar.consumo_mensual.value==''){ alert("Introduce el consumo medio mensual en la factura de electricidad"); document.frmSolar.consumo_mensual.focus(); return false; } //Nombre: if(document.frmSolar.nombre.value==''){ alert("Introduce tu nombre y apellidos"); document.frmSolar.nombre.focus(); return false; } //Población: if(document.frmSolar.poblacion.value==''){ alert("Introduce tu población"); document.frmSolar.poblacion.focus(); return false; } //Teléfono: if(document.frmSolar.telf.value.length < 8){ alert("Introduce un teléfono válido"); document.frmSolar.telf.focus(); return false; } //E-mail: var Correo = document.frmSolar.correo.value; if(document.frmSolar.correo.value=='' || ParseEmail(Correo) == false){ alert("Introduce un e-mail válido"); document.frmSolar.correo.focus(); return false; } } //Comprobar formato E-mail: function ParseEmail(Cadena){ if(Cadena=='') return true; //Detectar un solo @ // si no coincide es que hay mas de un @ if(Cadena.indexOf('@')!=Cadena.lastIndexOf('@') ) {return false; } // si no hay ningun @ if(Cadena.indexOf('@')==-1) { return false; } //Detectar caracter @ al principio if(Cadena.indexOf('@')==0) return false; //Detectar carac. @ y punto seguidos var posArroba=Cadena.indexOf('@'); var caracterSiguiente=Cadena.charAt(posArroba+1); if(caracterSiguiente=='.') return false; //Detectar Sufijo DNS valido // Extraer Sufijo DNS de Cadena. var sufijo= Cadena.substr(Cadena.lastIndexOf('.')+1); var Encontrado=false; // Lista de sufijos aceptados....a ampliar. var arraySufijos= new Array('es','com','org','cat','net'); for(k=0;k<=arraySufijos.length-1;k++){ // Recorremos el Array de sufijo que creamos anteriormente // si el sufijo esta en el Array entonces... si que es bueno if(arraySufijos[k]==sufijo){Encontrado=true; } } // Si al final resulta que NO ha sido encontrado mal!!! if(!Encontrado){return false;} //Detectar caracteres no validos. var CaracteresValidos='abcdefghijklmnopqrstuvwxyz0123456789@_-.'; //Preparamos un String de caracteres validos for(j=0;j<=Cadena.length-1;j++){ // recorremos cadena i buscamos caracter por //caracter si se encuentra dentro del String. if(CaracteresValidos.indexOf(Cadena.charAt(j))==-1){ // si no esta es que sera un caracter no valido return false; } } return true; } $(document).ready(function(){ //Poner primera opción de select al cargar la página: $('.aparatos option:first-child').attr('selected', 'selected'); //Selección aparato: $('.aparatos').live('change', function(){ var padre = $(this).closest('.row'); var aparato = $(this).val(); var id = padre.attr('id'); var qty = padre.find('.qty').val(); //Eliminamos los filtros del aparato que pudieran haber: padre.find('.nivel1').empty(); padre.find('.nivel2').empty(); padre.find('.nivel3').empty(); padre.find('.nivel4').empty(); //Cargando: $('#'+id+' .nivel1').html("
cargando
"); if(aparato != null || aparato != ''){ //alert(aparato); //alert(id); //alert(qty); $.post('tablas.php', {aparato:aparato, aparato2:aparato}, function(data){ $('#'+id+' .nivel1').html(data, function(){ $(this).css('width', 160+'px'); }); }); } }); //Selección filtro niveles: $('.nivel').live('change', function(){ var padre = $(this).closest('.row'); var aparato = padre.find('.aparatos option:selected').val(); //var filtro = $(this).val(); var filtro = $("option:selected", this).val(); var texto = $("option:selected", this).text(); //textoN1, variable que preciso para el aparato 'coccion', pues según el aparato tienen distintos niveles de filtro. var textoN1 = padre.find('.nivel1 option:selected').text(); var nivel = $(this).data('nivel'); var ancho = ''; var numero = padre.data('numero'); var numeral = $("option:selected", this).data('numeral'); var id = padre.attr('id'); var qty = padre.find('.qty').val(); //alert('Padre: '+padre); //alert('Aparato: '+aparato); //alert('Filtro: '+filtro); //alert('Texto: '+texto); //alert('Texto Nivel1: '+textoN1); //alert('Nivel: '+nivel); //alert('Numero: '+numero); //alert('Numeral: '+numeral); //alert('ID: '+id);*/ //alert('Cantidad: '+qty); //Eliminamos los filtros del aparato que pudieran haber: if(nivel == 1){ padre.find('.nivel2').empty(); padre.find('.nivel3').empty(); padre.find('.nivel4').empty(); }else if(nivel == 2){ padre.find('.nivel3').empty(); padre.find('.nivel4').empty(); }else if(nivel == 3){ padre.find('.nivel4').empty(); } //Cargando: $('#'+id+' .nivel'+(nivel+1)).html("
cargando
"); if(aparato != '' && filtro != ''){ $.post('tablas.php', {filtro:filtro, nivel:nivel, qty:qty, aparato2:aparato, texto:texto, textoN1:textoN1, numeral:numeral}, function(data){ $('#'+id+' .nivel'+(nivel+1)).html(data, function(){ $(this).css('width', 160+'px'); }); }); } }); //Selección aparato: /*$('.aparatos').live('change', function(){ var aparato = $(this).val(); var id = $(this).closest('.row').attr('id'); //alert(aparato); //alert(id); if(aparato != ''){ $('#'+id+' .columna').empty(); $('#'+id+' .nivel1').load(aparato+'.php', function(){ $(this).css('width', 160+'px'); }); } });*/ //Selección filtro niveles: /*$('.nivel').live('change', function(){ var aparato = $(this).closest('.row').find('.aparatos:last-child option:selected').val(); var filtro = $(this).val(); var nivel = $(this).data('nivel') + 1; var ancho = ''; var numero = $(this).closest('.row').data('numero'); var id = $(this).closest('.row').attr('id'); /*alert(aparato); alert(filtro); alert('nivel: '+nivel); alert('numero: '+numero); alert(id);*/ /*if(aparato != ''){ //Borro el resultado que pueda haber: $('#'+id+' .nivel4').empty(); if(nivel < 2 || nivel == 4){ ancho = 160; }else{ ancho = 100; } $('.transi').load(aparato+'.php?n='+filtro, function(){ var contenido = $('.transi').html(); //Mostramos resultado: if($('.transi p').length > 0){ //alert('existe el párrafo'); //$('#'+id+' .columna').css('width', ancho+'px'); $('#'+id+' .nivel4').append(contenido); $('.transi').empty(); $('#total').html(consumoTotal()); //Nuevo filtro: }else{ //Borrado de columnas anteriores: if(nivel == 1){ $('#'+id+' .nivel2').empty(); $('#'+id+' .nivel3').empty(); $('#'+id+' .nivel4').empty(); } if(nivel == 2){ $('#'+id+' .nivel3').empty(); $('#'+id+' .nivel4').empty(); } if(nivel == 3){ $('#'+id+' .nivel4').html(''); } $('#'+id+' .nivel'+nivel).css('width', ancho+'px').html(contenido); $('.transi').empty(); } }); } });*/ //Contabilizar consumo de aparato libre: $('.consumo_aparatoL').live('change', function(){ var pater = $(this).closest('.rowL'); var valor = $(this).val(); var aparato = pater.find('.aparatoL').val(); var cant = pater.find('.qty').val(); var consumo = valor * cant; //alert(valor); //Validamos que el valor sea numérico: if(isNaN(consumo)){ alert("Debes indicar la cantidad de W con un valor numérico"); $(this).val(0); }else{ //$('#total').html(consumoTotal()); //Eliminamos los anteriores input hidden que pudiera haber: $("input[type=hidden]", this).remove(); var elm = ''; elm += ''; elm += ''; elm += ''; elm += ''; $(this).append(elm); } //!/^([0-9])*$/.test(valor) Esta fórmula sólo sirve para números enteros. }); //Nuevo aparato: $('#btn_new_aparato').on('click', function(){ var numero = $('.row:last-child').data('numero'); //alert(numero); $('.transi').load('aparatos.php', {numero:numero}, function(){ var row = $('.transi').html(); $('#wrapper').append(row); //Añadimos numerador: //$('.row:last-child').data('numero', (numero+1)); //Añadimos id: //$('.row:last-child').attr('id', 'row'+(numero+1)); }); }); //Nuevo aparato libre: $('#btn_new_aparato_libre').on('click', function(){ var numero = $('.row:last-child').data('numero'); var elem = '
'; elem += ''; elem += '
'; elem += ''; elem += '
'; elem += '
'; elem += '' elem += '
'; elem += '
'; elem += ''; elem += '
'; elem += '
'; $('#wrapper').append(elem); //Añadimos numerador: $('.row:last-child').data('numero', (numero+1)); //Añadimos id: $('.row:last-child').attr('id', 'row'+(numero+1)); }); //Eliminar aparato: $('.close').live('click', function(){ $(this).parent('.row').fadeOut('slow').empty(); $('#total').html(consumoTotal()); }); //Borrar datos: $('.trash').on('click', function(){ $('#wrapper').empty().load('aparatos.html', function(){ //Añadimos numerador: $('.row:last-child').data('numero', 1); //Añadimos id: $('.row:last-child').attr('id', 'row1'); }); }); //Envío de formulario: $('#frmSolar').submit(function(event){ event.preventDefault(); validaFormContact; //if(validaFormContact){ $('.velo').show(); var data = $(this).serialize(); $.post('form-act.php', data, function(resp){ $('.velo').fadeOut(); $('.row').remove(); //Eliminamos filas $('#frmSolar')[0].reset(); //Vaciamos formulario //Añadimos nueva fila: $('.transi').load('aparatos.html', function(){ var row = $('.transi').html(); $('#wrapper').append(row); //Añadimos numerador: $('.row:last-child').data('numero', 1); //Añadimos id: $('.row:last-child').attr('id', 'row1'); }); $('.respuesta').html(resp).fadeIn().delay(3000).fadeOut('slow'); }); //} }); });