El problema es el siguiente, no entiendo que esté mal.
(combino javascript con jquery)
Sé que una variable cuando es declarada fuera de una funcion es global, para que una variable sea global declarada dentro de una funcion, debe hacerse sin "var".
En mi codigo, tengo una funcion que es ejecutada dentro de otra funcion.
La segunda se ejecuta al dar click en un boton. esta, debe evaluar si una variable ("fal") es mayor a cero. Esta variable, es declarada globalmente fuera de ambas funciones, por defecto en 0.
Al presionar el boton, la primer funcion es ejecutada, evalua los campos, si la variable es de valor 0 ejecuta a la segunda funcion y comienza un contador, el cual hace que dicha variable cambie de valor (mayor a 0).
Al pulsar por segunda vez el boton, la primer funcion deberia negar la ejecucion de la segunda, pero no es así.
Si no declarara la variable de manera global, simplemente me tira el error que la variable no ha sido declarada y nada funciona.
El codigo es el siguiente:
vriable:
Código PHP:
var fal=0;
Código PHP:
function faltan(fal){
fal = fal-1000;
if (fal > 0){
var segundos = Math.round(fal/1000);
var minutos = Math.floor(segundos/60);
var segundos_s = segundos%60;
var horas = Math.floor(minutos/60);
var minutos_s = minutos%60;
var dias = Math.floor(horas/24);
var horas_s = horas%24;
$(".error").html('Para otro espera<br>'+minutos_s+":"+segundos_s);
setTimeout("faltan("+fal+")",1000);
}
else {
$(".error").css('background-color', '#00ff00');
$(".error").html('Púedes enviar un saludo');
return true;
}
}
Código PHP:
$("#peti").live('click', function(){
re=/^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*(.[a-z]{2,3})$/
var name = $("#n").val();
var email = $("#e").val();
var com = $("#c").val();
var p = $("#p").val();
var n = $("#c").val().length;
if(re.exec(email)){
if (name == "" || email == "" || com == ""){
$(".error").css('background-color', e_color);
$(".error").html('Un canpo está vacio');
}else{//vacios
if (n>=50){
if (fal <= 0){
$('#error').load('mail.php?n='+name+'&e='+email+'&c='+com+'&p='+p+'');
$(".error").css('background-color', e_color);
faltan(180000);
}else{//faltan
alert(fal);
$(".error").css('border', '1px solid #ffffff');
}
}//caracteres min
}
}else{//evalua
$(".error").css('background-color', e_color);
$(".error").html('E-mail Invalido');
}
});