Evitando RE-POSTS

Hace tiempo que quería resolver el problema que se produce cuando un usuario impaciente pulsa más de una vez el botón en un formulario enviando datos. Dependiendo del tipo de proceso detrás de esta acción, las consecuencias pueden ser más o menos graves.
Imagina que compras en una página y al confirmar la compra, pulsas dos veces.
Resultado: si la página no controla esta acción, posiblemente acabes con dos cargos en tu tarjeta.
Esta mañana, googleando he encontrado una solución muy simple, eso sí, requiere Javascript:

Deshabilitar el botón una vez que se ha pulsado sobre él.
Ejemplo:

Lo cual se puede lograr mediante el siguiente código:

< input type="button" name="enviar_datos" value="Enviar datos" onClick="this.value='Espera...'; this.disabled=true; this.form.submit()" />