buenas,
lo que entiendo del tema es que se busca limitar el click mientras se va actualizando la base de datos. con esto asumo que está usando AJax para enviar los datos a la base de datos. sea o no con Ajax, la técnica es muy similar. de momento me asalta una duda, ¿cómo determinas el tiempo requerido de espera para volver habilitar la acción? ¿debe ser un tiempo fijo o mientras se actualiza la base de datos?
si es por un tiempo fijo, la sugerencia de @djoaq es una alternativa. solo que en su código de ejemplo hay un error; la variable
temp debe ser global. también debes tener cuidado de si quieres extender el tiempo de espera en cada click.
Código:
// tiempo fijo, en cada click se extiende la espera ;
function activo(){
clearTimeout(temp);
temp = setTimeout(function(){
alert("mnsj");
},5000);
var temp = null;
// tiempo fijo, no se extiende el tiempo de espera ;
function activo(){
if (!isNaN(temp)) return;
temp = setTimeout(function(){
alert("mnsj");
temp = null;
},5000);
var temp = null;
de forma similar se puede hacer si el tiempo de espera es mientras se actualiza la base de datos. en este caso, debes crear una variable tipo
flag. es decir, cuando se activa la función, se inicia la variable a un valor que provoque una salida prematura al volver invocar la misma función; parecido al segundo código. para restaurar la variable, una vez termine la actualización de la base de datos, cambias el valor de dicha variable. nuevamente, aquí pienso que estás usando Ajax. entonces, la restauración la haces al completarse la comunicación de Ajax con el servidor.