viernes, 26 de octubre de 2007

Un código en JavaScript para impedir que una caja de texto tenga espacios al principio y al final

Hola

Esta mañana me salió la niña de calidad con que no quería ver espacios ni delante ni detrás del texto que se escribe en un TextBox de la página web para la cual estoy trabajando, después de analizar el caso esta fue la solución que implementé y probé en Internet Explorer 7.0


<
script
language="javascript"
type="text/javascript">



function textoSinEspacios(cadena, evt)

{

if(evt.keyCode == 32 && cadena.length==0) return
false;


if(evt.keyCode == 32 && cadena.length > 2 && cadena.charAt(cadena.length-1) == ' ') return
false;


return
true;

}

</script>


 

¿Cómo aplicarla?

Esto lo apliqué en ASP.net pero tambien funciona sobre controles HTML estándar y para ello agrégale estos atributos a la caja de texto:

onKeyDown="return textoSinEspacios(this.value, event)" OnContextMenu="return false;"

así quedaria para un webcontrol en asp.net:
<
asp:TextBox
ID="txtNombre"
runat="server"
onKeyDown="return textoSinEspacios(this.value, event)"


OnContextMenu="return false;"></asp:TextBox>


 


 

¿Cómo funciona?


Para evitar espacios vacios al principio:

Teniendo en cuenta que el codigo ASCII del espacio es el 32 se puede validar que cuando la lonjitud de la cadena que el usuario escribe en la caja de texto sea cero y si el caracter que acaba de presionar es 32 entonces que retorne un false.

Para evitar espacios vacios al final:
Si la lonjitud de la cadena es mayor que dos y el penultimo carácter es un espacio entonces que retorne false de lo contrario siempre retorna true.

1 comentario:

Unknown dijo...

buena esa parce .... ya casi se parece a mi ....