Que tal,
pues mi recomendacion es que a un texto le agregues un validador,
y aparte mediante javascript le des formato al texto que el usuario escribe,
por ejemplo (te dare un ejemplo para que lo sigas y aprendas),
mi ejemplo es el formato del codigo postal usado en canada.
[caracter+numero+caracter+espacio o guion+numero + caracter]
y aparte si el usuario escribe un o en lugar de 0 lo debo cambiar, o
si escribe l en lugar de 1 tambien este se debe sustituir.
Codigo:
En la pagina aspx agregamos un texto y su validador.
control de texto id =txtRegularExp
validadadorId=RegularExpressionValidator1
en el codigo de la pagina en el evento load ponemos la cadena de validacion
y enlazamos la funcion javascript al control texto:
protected void Page_Load(object sender, EventArgs e)
{
Session["Country"] = "Canada";
loadAddresses();
RegularExpressionValidator1.Enabled = false;
if (Session["Country"].ToString()=="Canada")
{
RegularExpressionValidator1.Enabled = true;
RegularExpressionValidator1.ValidationExpression="[a-zA-Z]+\d+[a-zA-Z]+[' ']+\d+[a-zA-Z]+\d";
RegularExpressionValidator1.ControlToValidate="txtRegularExp";
string fFormat = "javascript: formatCPCanadian(this.value); return false;";
txtRegularExp.Attributes.Add("onblur",fFormat);
}
--ahora en la pagina aspx escribimos la funcion de javascript que corregira nuestro texto de entrada:
<script language="javascript" type="text/javascript">
function formatCPCanadian(sCodePostal)
{
alert('<%=Session["Country"]%>');
//sorting
//sCodePostal=sCodePostal.toUpperCase();
sCodePostal=sCodePostal.replace('-',' ');
sCodePostal=sCodePostal.replace(' ','');
//inserting space in place 4
var output='';
var chrOutput='';
for (var i=0; i<sCodePostal.length; i++)
{
if (i==3)
output +=' ';
//replacing special character to number O --> 0, L --> 1
if (((sCodePostal.charAt(i)=='L')||(sCodePostal.charAt(i)=='l'))&&((i==1)||(i==3)||(i==5)))
{
chrOutput ='1';
}
else if (((sCodePostal.charAt(i) == 'O')||(sCodePostal.charAt(i) == 'o')) && ((i == 1) || (i == 3) || (i == 5)))
{
chrOutput ='0';
}
else
{
chrOutput=sCodePostal.charAt(i);
}
output +=chrOutput;
}
//validating the output string
var regOutput=/[a-zA-Z]+d+[a-zA-Z]+[' ']+d+[a-zA-Z]+d/;
//alert(output.search(regOutput));
if(output.search(regOutput)==0)//if after the changes is a PC valid then set into textbox
document.getElementById('txtRegularExp').value=output;
document.getElementById('txtRegularExp').onchange();//re-call the verification process by C#.
}
</script>
-Listo espero te sirva
Saludos