El problema
Los campos de texto en los formularios son el método habitual para recoger datos de los visitantes de una página, pero estos elementos también pueden usarse para contener textos que no deben ser modificables por el usuario, pues son objetos a los que es muy fácil asignar un valor. Podemos indicar al usuario que no modifique esos campos, pero esta medida no es cien por cien segura, los mejor es evitar que ese campo sea editable. ¿Como lograrlo?

La solución
La solución es bien simple: cuando el ratón entre en el campo que debe permanecer inalterado lo echamos de allí. Esta es la idea y para lograrlo usamos el evento onfocus del campo editable, evento que se dispara cuando este elemento se convierte en el elemento activo. A este evento le asignamos una llamada a una función que elimine el foco del elemento, esta función simplemente ejecutaría el método blur( ) del elemento editable. Es necesario también evitar que el evento llame a la rutina que por defecto se encarga de manejae el evento onfocus, para ello añadimos a la llamada a blur() una sentencia return false.

Un caso práctico

En este ejemplo se usa un formulario con un elemento textarea que estará bloqueado por el método explicado en esta página.

<form name="form1" method="post" action="">
<p>
<textarea name="campo" rows="15" cols="60" onfocus="this.blur(); return false">text area</textarea>
<input type="button" name="Button" value="Button" onclick="usaresteform(this.form)">
</p>
</form>

Como vemos el método es de lo más simple: directamente vinculamos el evento onfocus al método blur( ) del área de texto. Como se ve en el código tras la llamada a blur( ) aparece un return false, para evitar que entre en funcionamiento el manejador por defecto del evento vinculado, onfocus.