Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   .NET (http://www.forosdelweb.com/f29/)
-   -   Validacion de campos numericos (http://www.forosdelweb.com/f29/validacion-campos-numericos-385162/)

txarly 11/04/2006 09:35

Validacion de campos numericos
 
Con los validadores de ASP.Net como puedo controlar que en un control <asp:textbox> solo pueda poner campos numericos?
Al principio habia pensado crear un UserControl que al editarlo solo permita introducir numeros, pero creo que una solución más rapida es utilizar los validadores, bien con expresiones regulares ó con CustomValidator.

Tienen algun ejemplo de como conseguir esto?

Un saludo

splinter 11/04/2006 16:11

Con buenos resultados he usado este codigo,

*En el Load de tu pagina le agregas la funcion

this.TxtNumber.Attributes.Add("onkeypress", "return GetValidatorByString(event)");


*Esta es la funcion:
<script>
function GetValidatorByString (e)
{
tecla = (document.all)?e.keyCode:e.which;
if (tecla==8) return true;
patron = /[a-zA-ZÑñ[email protected]_áéíóú;:()+*!"·$%&]/;
te = String.fromCharCode(tecla);
return patron.test(te);

//EJEMPLOS: de patrones
//patron = /[a-zA-ZÑñ]/; //letras
//patron = /[a-zA-ZÑñ[email protected]_áéíóú;:()+*!"·$%& ]/; //caracteres y numeros
//patron = /[1234567890]/; //solo numeros
}
</script>


*Para solo permitir numero usarias: patron = /[1234567890]/;


RootK 11/04/2006 16:45

De una vez la incluyo en las faq´s para tener la referencia..

http://www.forosdelweb.com/showthrea...65#post1500865

Salu2

txarly 12/04/2006 00:31

Muchas gracias, me gusta la solución, va perfecto :arriba:

txarly 12/04/2006 00:46

¿Por cierto, teneis la expresion regular o el patron que permita introducir numeros decimales o fechas?

txarly 12/04/2006 02:07

Quiza con una expresion regular se pueda conseguir que te valide el numero decimal a medida que escribes, no lo he encontrado, pero otra forma de conseguirlo es utilizar esta función:

this.txtNominal.Attributes.Add("onkeypress", "return Floats(this, event)");

function Floats(obj, e)
{

// NOTE: Backspace = 8, Enter = 13, '0' = 48, '9' = 57, ',' = 44
cadena = obj.value;
key = (document.all)? e.keyCode:e.which;
// buscar en la cadena si existe ','
if (cadena.indexOf(',') == -1 && cadena.length > 0) {
return (key <= 13 || (key >= 48 && key <= 57) || key == 44);
} else {
return (key <= 13 || (key >= 48 && key <= 57));
}
}

splinter 12/04/2006 13:01

En mi caso le agregue el . (punto) a la lista

patron = /[1234567890.]/;

saludos

xknown 13/04/2006 10:19

Cita:

Iniciado por splinter
En mi caso le agregue el . (punto) a la lista

patron = /[1234567890.]/;

saludos

Creo que deberías revisar un poco sobre expresiones regulares, ya que el punto en el contexto que pones, representa cualquier caracter. Además, si esa expresión regular estuviera bien, consideraría válidos números como "45.5.5"

Creo que el script para números decimales podría ser:
Código:

<input type="text" id="foo">
....
function validar(e)
{
    tecla = (window.event) ? window.event.keyCode : e.which;
    if (tecla == 8) return true;
   
    if ( (te = String.fromCharCode(tecla)) == '.' && this.value.indexOf('.') == -1)
        return true;
    return /[\d]/.test(te);
}
....
document.getElementById('foo').onkeypress = validar;

Saludos

splinter 30/04/2006 20:58

Expresion regular con 5 digitos y dos decimales

^\d{1,5}(\.\d{1,2})?$


saludos

Diablito69 31/01/2007 14:10

Re: Validacion de campos numericos
 
Cita:

Iniciado por txarly (Mensaje 1501189)
Quiza con una expresion regular se pueda conseguir que te valide el numero decimal a medida que escribes, no lo he encontrado, pero otra forma de conseguirlo es utilizar esta función:

this.txtNominal.Attributes.Add("onkeypress", "return Floats(this, event)");

function Floats(obj, e)
{

// NOTE: Backspace = 8, Enter = 13, '0' = 48, '9' = 57, ',' = 44
cadena = obj.value;
key = (document.all)? e.keyCode:e.which;
// buscar en la cadena si existe ','
if (cadena.indexOf(',') == -1 && cadena.length > 0) {
return (key <= 13 || (key >= 48 && key <= 57) || key == 44);
} else {
return (key <= 13 || (key >= 48 && key <= 57));
}
}

No quiero revivir ningun post antiguo pero solo dar las gracias por esta solucion ya que ha sido la unica que me ha funcionado, he probado con tantas hasta que de tanto buscar he encontrado esta. Funciona perfectamente y sólo permite 1 coma para separar la parte decimal.


Gracias!!!

freegirl 01/06/2007 04:23

Re: Validacion de campos numericos
 
me he equivocado al responder, pero como no puedo eliminar el msg..


La zona horaria es GMT -6. Ahora son las 06:35.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.