Foros del Web » Programando para Internet » Javascript »

Validar si introducimos una ,

Estas en el tema de Validar si introducimos una , en el foro de Javascript en Foros del Web. Existe alguna funcion que valida la existencia de una , en una serie de numeros, es decir 123 ---> que devuelva OK 123.12 ---> que ...
  #1 (permalink)  
Antiguo 04/11/2005, 03:50
 
Fecha de Ingreso: abril-2003
Mensajes: 260
Antigüedad: 21 años
Puntos: 0
Validar si introducimos una ,

Existe alguna funcion que valida la existencia de una , en una serie de numeros, es decir

123 ---> que devuelva OK
123.12 ---> que devuelva OK
123,8 ---> que devuelva ERROR

Si existe esta funcion, se puede aplicar, para encontrar otros caracteres???
__________________
Salut i Força al Canut
  #2 (permalink)  
Antiguo 04/11/2005, 03:55
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Hola algicor

Esto te servirá:
Código:
num=123,8;
if (num.indexOf(',') != -1) alert('error')
Saludos,
  #3 (permalink)  
Antiguo 04/11/2005, 04:02
 
Fecha de Ingreso: abril-2003
Mensajes: 260
Antigüedad: 21 años
Puntos: 0
ME da un error
El Obejto no acepta esta propiedad.
Que hace el indexOf
__________________
Salut i Força al Canut
  #4 (permalink)  
Antiguo 04/11/2005, 04:56
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 4 meses
Puntos: 61
Vamos a dártelo un poco más mascado:

<input onkeyup="this.value=this.value.split(',').join('.' )" type="text">

__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #5 (permalink)  
Antiguo 04/11/2005, 05:02
 
Fecha de Ingreso: abril-2003
Mensajes: 260
Antigüedad: 21 años
Puntos: 0
Ya lo tengo, el problema era que la recepcion de los datos, lo hacia mediante, el ParseInt, y claro, luego no funcionaba el indexOf

Por cierto, me podeis aclara que hace el indexOf
Gracias de nuevo...
__________________
Salut i Força al Canut
  #6 (permalink)  
Antiguo 04/11/2005, 05:08
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
indexOf es un método para el objeto de clase string, por eso no lo acepta cuando es de clase number

Si lo recoges como parseInt, aparte de todo, siempre te lo devolverá sin comas (le quita los decimales) así que si no le aplicas el parseInt lo recogerá como cadena desde el campo de formulario.

Igual, si necesitas usar el indexOf para un objeto de tipo number siempre puedes pasarlo a string
valor.toString().indexOf(',')

El indexOf lo que hace es devolver la posición del caracter o cadena especificado como parámetro. Si no lo encuentra devuelve -1
  #7 (permalink)  
Antiguo 04/11/2005, 05:12
 
Fecha de Ingreso: abril-2003
Mensajes: 260
Antigüedad: 21 años
Puntos: 0
Gracias por la informacion
__________________
Salut i Força al Canut
  #8 (permalink)  
Antiguo 04/11/2005, 05:14
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
un placer
  #9 (permalink)  
Antiguo 04/11/2005, 06:16
 
Fecha de Ingreso: abril-2003
Mensajes: 260
Antigüedad: 21 años
Puntos: 0
La cosa que parecia resuelta se vuelve a complicar, y lo mejor es sacar el problema de Raiz.

Estoy realizando una introduccion de unos valores, en este caso de unos valores numericos...y estos valores son almacenados en una base de datos SQL, mas concretamente, en un campo tipo Money, que almacena los valores decimales.

De ello todas las validaciones que estaba realizando, para que no se introdujeran valores con .

Ahora el problema con los . estan resueltos, pero me encuentro con que se pueden introducir, varios ,
Como validar que no existan mas de 1 ,???
Gracias de antemano.
__________________
Salut i Força al Canut
  #10 (permalink)  
Antiguo 04/11/2005, 06:26
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Pero ¿quieres avisar del error o corregirlo directamente o qué?

Si indexOf devuelve > 0 quiere decir que al menos hay una. Habrías de validarlo cada vez que se modificara.

Si lo que quieres es alterarlo directamente podrías usar expresiones regulares y re-emplazarlo por lo que te parezca

mira este ejemplo a ver si te orienta

Código:
<script type="text/javascript">
<!--
valor = "123,456,789";
pat = /\,/
alert(pat.test(valor))
valor = valor.replace(/\,/g,"")
alert(valor)
//-->
</script>

saludos :cool:
  #11 (permalink)  
Antiguo 04/11/2005, 06:29
 
Fecha de Ingreso: abril-2003
Mensajes: 260
Antigüedad: 21 años
Puntos: 0
Me gustaria avisar que ha introducido una burrada, y que se de cuenta, que lo que ha introducido no es una cantidad.
REviso un poco tu codigo, a ver si lo entiendo

Pero no existe una funcion para ver el numero de repeticiones de un determinado caracter???
Gracias de antemano
__________________
Salut i Força al Canut
  #12 (permalink)  
Antiguo 04/11/2005, 06:32
 
Fecha de Ingreso: abril-2003
Mensajes: 260
Antigüedad: 21 años
Puntos: 0
De echo estaba mirando otro post tuyo, en el que se hablaba del replace

http://www.forosdelweb.com/showthrea...ight=remplazar
__________________
Salut i Força al Canut
  #13 (permalink)  
Antiguo 04/11/2005, 07:43
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Bueno, si quieres saber el número de veces que aparece una coma podrías dividir la cadena por las comas y pedirle la cantidad de partes devueltas menos 1

Código:
valor = "123,456,789";
cantidad = valor.split(",").length-1
alert(cantidad)
  #14 (permalink)  
Antiguo 04/11/2005, 13:32
 
Fecha de Ingreso: abril-2003
Mensajes: 260
Antigüedad: 21 años
Puntos: 0
Funciona a la maravilla...
Muchas gracias
__________________
Salut i Força al Canut
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 10:07.