Foros del Web » Programando para Internet » Javascript »

Consulta...ceros en campo de texto numerico

Estas en el tema de Consulta...ceros en campo de texto numerico en el foro de Javascript en Foros del Web. Estimados amigos, encontre en la web este codigo el cual me permite ingresar SOLO NUMEROS en el campo de texto, <script language="javascript" type="text/javascript"> function LP_data(){ ...
  #1 (permalink)  
Antiguo 06/08/2008, 11:44
Avatar de hoberwilly  
Fecha de Ingreso: julio-2008
Ubicación: Lima - Perú
Mensajes: 769
Antigüedad: 15 años, 9 meses
Puntos: 2
Pregunta Consulta...ceros en campo de texto numerico

Estimados amigos, encontre en la web este codigo el cual me permite ingresar SOLO NUMEROS en el campo de texto,

<script language="javascript" type="text/javascript">
function LP_data(){
var key=window.event.keyCode;
if (key < 48 || key > 57){
window.event.keyCode=0;}
}
</script>
<form..>
<input name="cantidad" type="text" id="cantidad" onKeypress="LP_data()">
<input type="submit">
</form>

todo anda de maravillas; ejemplos (caja de texto: 115, 895, 538, 638, etc,...) pero tambien me permite ingresar 038, 008, 099, 019, etc ...aqui es donde esta mi problema lo que quisiera es que no permita ingresar UN CERO ADELANTE del numero original.

Agradeciendo de antemano la ayuda que me puedan brindar, y esperando una respuesta positiva de su parte.
  #2 (permalink)  
Antiguo 06/08/2008, 15:32
Avatar de hoberwilly  
Fecha de Ingreso: julio-2008
Ubicación: Lima - Perú
Mensajes: 769
Antigüedad: 15 años, 9 meses
Puntos: 2
Respuesta: Consulta...ceros en campo de texto numerico

Por favor si alguien podria ayudarme...gracias
  #3 (permalink)  
Antiguo 06/08/2008, 15:38
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
Respuesta: Consulta...ceros en campo de texto numerico

Hola hoberwilly:

Aviso de que ese script sólo funciona para IE, que es el único que tiene window.event disponible.

Bien, pues para tu problema lo que tenemos que hacer es unir dos condiciones *:
1) Que sea un número*, esa ya la tenemos: (key < 48 || key > 57)
2) Si es un cero (key===48), que la longitud del valor del campo actual sea > 0*

No sería muy dificil sabiendo que se unen condiciones así con and (&&)* y que la longitud del valor de un campo es campo.length* siendo campo el campo en cuestión.


Inténtalo.


*EDIT: Mejor no tener en cuenta este post, está lleno de incorrecciones. Mirar mi siguiente post.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.

Última edición por derkenuke; 08/08/2008 a las 08:25
  #4 (permalink)  
Antiguo 07/08/2008, 16:08
Avatar de hoberwilly  
Fecha de Ingreso: julio-2008
Ubicación: Lima - Perú
Mensajes: 769
Antigüedad: 15 años, 9 meses
Puntos: 2
Respuesta: Consulta...ceros en campo de texto numerico

Hola, segun lo sugerido no me sale lo que requiero...he intentado de otras maneras pero no doy con la correcta????

function LP_data(){
var key=window.event.keyCode;
if (key < 48 || key > 57 && key==48){
window.event.keyCode>0;}
}

si alguien me puede ayudar por favor...
  #5 (permalink)  
Antiguo 08/08/2008, 08:00
Avatar de hoberwilly  
Fecha de Ingreso: julio-2008
Ubicación: Lima - Perú
Mensajes: 769
Antigüedad: 15 años, 9 meses
Puntos: 2
Respuesta: Consulta...ceros en campo de texto numerico

Por favor si alguien podria ayudarme...gracias
  #6 (permalink)  
Antiguo 08/08/2008, 08:24
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
Respuesta: Consulta...ceros en campo de texto numerico

Perdona hoberwilly, parece ser que ese día no estaba muy lúcido:

Te dije que había que unir dos condiciones. Lo que pasa es que en tu código tenemos la condicional inversa: Si key está entre 48 y 57 (incluídos) entonces es un número. Pero tú lo tienes al revés: Si key está fuera de [48,57] entonces No es un número. Tenemos que unir otra condición para el caso No es un número.

Dos condiciones de que No sea un número, unidas con OR (||) porque cualquiera nos vale para que No sea un número:
1) Que No sea un núero (key < 48 || key > 57)
2) Si es un cero (key===48), y la longitud del valor del campo actual es 0. Eso sería así: (key==48 && campo.value.length==0)

Me equivoqué al decirte que campo.length era la longitud del campo. El campo no tiene propiedad length, es su valor (value) lo que tiene propiedad length.

Para obtener la variable campo debes pasarla como parámetro a la función:
Código PHP:
function LP_data(campo){ 
Y llamarla en el evento onkeypress (todo con minúsculas) mediante la palabra reservada this:
Código PHP:
onkeypress="return LP_data(this)" 

A ver si así lo resuelves.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #7 (permalink)  
Antiguo 08/08/2008, 10:48
Avatar de hoberwilly  
Fecha de Ingreso: julio-2008
Ubicación: Lima - Perú
Mensajes: 769
Antigüedad: 15 años, 9 meses
Puntos: 2
Respuesta: Consulta...ceros en campo de texto numerico

Hola Derkenuke; hice lo indicado pero nada

function LP_data(campo){
var key=window.event.keyCode;
if (key < 48 || key > 57 && key==48 && campo.value.length==0){
window.event.keyCode=0;}
}

onKeypress="return LP_data(this)"

...en la caja de texto ahora me permite ingresar letras cosa k no se requiere.
Lo que se requiere es: valido solo para numeros, pero que no permita ingresar el 0083, 0125, 00015.

Gracias de antemano
  #8 (permalink)  
Antiguo 08/08/2008, 11:26
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
Respuesta: Consulta...ceros en campo de texto numerico

Casi lo tienes hoberwilly, pero lee mis consejos:

Cita:
Iniciado por derkeNuke
Dos condiciones de que No sea un número, unidas con OR (||) porque cualquiera nos vale para que No sea un número
Usa paréntesis para saber lo que se ejecuta antes en la condicional, sino puede ser muy confuso:

Código PHP:
<script type="text/javascript">
function 
LP_data(campo){
    var 
key=window.event.keyCode;
    if ( (
key<48 || key>57) || (key==48 && campo.value.length==0) ){
        
window.event.keyCode=0;
    }

</script>
<form>
    <input name="cantidad" type="text" id="cantidad" onkeypress="LP_data(this)" />
    <input type="submit" />
</form> 
Ahora te faltaría implementarlo para que sea estándar y funcione en todos los navegadores, no sólo en IE.

Si te ayuda puedes utilizar variables para escribir condicionales complejas:
Código PHP:
function LP_data(campo){
var 
key=window.event.keyCode;
    var 
esNumero = (key<48 || key>57);
    var 
EsPrimeroYesCero = (key==48 && campo.value.length==0);
    if ( 
esNumero || EsPrimeroYesCero ){
        
window.event.keyCode=0;
    }


Saludos.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #9 (permalink)  
Antiguo 08/08/2008, 11:51
Avatar de hoberwilly  
Fecha de Ingreso: julio-2008
Ubicación: Lima - Perú
Mensajes: 769
Antigüedad: 15 años, 9 meses
Puntos: 2
Respuesta: Consulta...ceros en campo de texto numerico

Gracias Derkenuke, funciona de maravillas...gracias otra vez
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 20:13.