Foros del Web » Programación para mayores de 30 ;) » .NET »

Validacion de campos numericos

Estas en el tema de Validacion de campos numericos en el foro de .NET en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 11/04/2006, 09:35
Avatar de txarly  
Fecha de Ingreso: marzo-2003
Ubicación: Eibar (Gipuzkoa)
Mensajes: 455
Antigüedad: 21 años, 1 mes
Puntos: 2
Pregunta 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
__________________
¿Por qué Uri Geller doblaba cucharas?
  #2 (permalink)  
Antiguo 11/04/2006, 16:11
Avatar de splinter  
Fecha de Ingreso: junio-2004
Ubicación: Misantla,Ver.Mexico
Mensajes: 181
Antigüedad: 19 años, 10 meses
Puntos: 0
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]/;


Última edición por splinter; 11/04/2006 a las 16:22
  #3 (permalink)  
Antiguo 11/04/2006, 16:45
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
De una vez la incluyo en las faq´s para tener la referencia..

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

Salu2
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net
  #4 (permalink)  
Antiguo 12/04/2006, 00:31
Avatar de txarly  
Fecha de Ingreso: marzo-2003
Ubicación: Eibar (Gipuzkoa)
Mensajes: 455
Antigüedad: 21 años, 1 mes
Puntos: 2
Muchas gracias, me gusta la solución, va perfecto
__________________
¿Por qué Uri Geller doblaba cucharas?
  #5 (permalink)  
Antiguo 12/04/2006, 00:46
Avatar de txarly  
Fecha de Ingreso: marzo-2003
Ubicación: Eibar (Gipuzkoa)
Mensajes: 455
Antigüedad: 21 años, 1 mes
Puntos: 2
¿Por cierto, teneis la expresion regular o el patron que permita introducir numeros decimales o fechas?
__________________
¿Por qué Uri Geller doblaba cucharas?
  #6 (permalink)  
Antiguo 12/04/2006, 02:07
Avatar de txarly  
Fecha de Ingreso: marzo-2003
Ubicación: Eibar (Gipuzkoa)
Mensajes: 455
Antigüedad: 21 años, 1 mes
Puntos: 2
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));
}
}
__________________
¿Por qué Uri Geller doblaba cucharas?
  #7 (permalink)  
Antiguo 12/04/2006, 13:01
Avatar de splinter  
Fecha de Ingreso: junio-2004
Ubicación: Misantla,Ver.Mexico
Mensajes: 181
Antigüedad: 19 años, 10 meses
Puntos: 0
En mi caso le agregue el . (punto) a la lista

patron = /[1234567890.]/;

saludos
  #8 (permalink)  
Antiguo 13/04/2006, 10:19
Avatar de xknown  
Fecha de Ingreso: diciembre-2004
Ubicación: Cusco - Perú
Mensajes: 2.248
Antigüedad: 19 años, 4 meses
Puntos: 7
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
__________________
Alex Concha
Buayacorp - Programación y Diseño
  #9 (permalink)  
Antiguo 30/04/2006, 20:58
Avatar de splinter  
Fecha de Ingreso: junio-2004
Ubicación: Misantla,Ver.Mexico
Mensajes: 181
Antigüedad: 19 años, 10 meses
Puntos: 0
Expresion regular con 5 digitos y dos decimales

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


saludos
  #10 (permalink)  
Antiguo 31/01/2007, 14:10
 
Fecha de Ingreso: agosto-2005
Mensajes: 57
Antigüedad: 18 años, 8 meses
Puntos: 0
Re: Validacion de campos numericos

Cita:
Iniciado por txarly Ver Mensaje
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!!!
  #11 (permalink)  
Antiguo 01/06/2007, 04:23
Avatar de freegirl
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: Catalonia
Mensajes: 4.334
Antigüedad: 20 años, 7 meses
Puntos: 156
Re: Validacion de campos numericos

me he equivocado al responder, pero como no puedo eliminar el msg..
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




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