Retroceder   Foros del Web > Programación para sitios web > .NET

Respuesta
 
Herramientas Desplegado
Antiguo 11-abr-2006, 09:35   #1 (permalink)
txarly está en el buen camino
 
Avatar de txarly
 
Fecha de Ingreso: marzo-2003
Ubicación: Eibar (Gipuzkoa)
Mensajes: 426
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?
txarly está desconectado   Responder Citando
Antiguo 11-abr-2006, 16:11   #2 (permalink)
splinter está en el buen camino
 
Avatar de splinter
 
Fecha de Ingreso: junio-2004
Ubicación: Misantla,Ver.Mexico
Mensajes: 181
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Ññ1234567890@.-_áéíóú;:()+*!"·$%&]/;
te = String.fromCharCode(tecla);
return patron.test(te);

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


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


Última edición por splinter; 11-abr-2006 a las 16:22.
splinter está desconectado   Responder Citando
Antiguo 11-abr-2006, 16:45   #3 (permalink)
Moderador
RootK llegará a ser famoso muy prontoRootK llegará a ser famoso muy pronto
 
Avatar de RootK
 
Fecha de Ingreso: noviembre-2002
Ubicación: México D.F
Mensajes: 7.528
Enviar un mensaje por MSN a RootK
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 . . .
RootK está desconectado   Responder Citando
Antiguo 12-abr-2006, 00:31   #4 (permalink)
txarly está en el buen camino
 
Avatar de txarly
 
Fecha de Ingreso: marzo-2003
Ubicación: Eibar (Gipuzkoa)
Mensajes: 426
Muchas gracias, me gusta la solución, va perfecto
__________________
¿Por qué Uri Geller doblaba cucharas?
txarly está desconectado   Responder Citando
Antiguo 12-abr-2006, 00:46   #5 (permalink)
txarly está en el buen camino
 
Avatar de txarly
 
Fecha de Ingreso: marzo-2003
Ubicación: Eibar (Gipuzkoa)
Mensajes: 426
¿Por cierto, teneis la expresion regular o el patron que permita introducir numeros decimales o fechas?
__________________
¿Por qué Uri Geller doblaba cucharas?
txarly está desconectado   Responder Citando
Antiguo 12-abr-2006, 02:07   #6 (permalink)
txarly está en el buen camino
 
Avatar de txarly
 
Fecha de Ingreso: marzo-2003
Ubicación: Eibar (Gipuzkoa)
Mensajes: 426
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?
txarly está desconectado   Responder Citando
Antiguo 12-abr-2006, 13:01   #7 (permalink)
splinter está en el buen camino
 
Avatar de splinter
 
Fecha de Ingreso: junio-2004
Ubicación: Misantla,Ver.Mexico
Mensajes: 181
En mi caso le agregue el . (punto) a la lista

patron = /[1234567890.]/;

saludos
splinter está desconectado   Responder Citando
Antiguo 13-abr-2006, 10:19   #8 (permalink)
xknown está en el buen camino
 
Avatar de xknown
 
Fecha de Ingreso: diciembre-2004
Ubicación: Cusco - Perú
Mensajes: 2.249
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
xknown está desconectado   Responder Citando
Antiguo 30-abr-2006, 20:58   #9 (permalink)
splinter está en el buen camino
 
Avatar de splinter
 
Fecha de Ingreso: junio-2004
Ubicación: Misantla,Ver.Mexico
Mensajes: 181
Expresion regular con 5 digitos y dos decimales

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


saludos
splinter está desconectado   Responder Citando
Antiguo 31-ene-2007, 13:10   #10 (permalink)
Diablito69 está en el buen camino
 
Fecha de Ingreso: agosto-2005
Mensajes: 57
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!!!
Diablito69 está desconectado   Responder Citando
Antiguo 01-jun-2007, 04:23   #11 (permalink)
freegirl tiene algunos puntos positivos de karma
 
Avatar de freegirl
 
Fecha de Ingreso: octubre-2003
Ubicación: Catalunya
Mensajes: 2.236
Re: Validacion de campos numericos

me he equivocado al responder, pero como no puedo eliminar el msg..
freegirl está desconectado   Responder Citando
Respuesta

No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 19:54.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93