Foros del Web » Programando para Internet » Javascript »

Evitar caracteres repetidos

Estas en el tema de Evitar caracteres repetidos en el foro de Javascript en Foros del Web. Hola a todos. Hace poco que estoy trabajando en javascript, y ahora tengo un pequeño dilema: como puedo hacer que cuando introduzco caracteres dentro de ...
  #1 (permalink)  
Antiguo 12/02/2007, 05:02
 
Fecha de Ingreso: febrero-2007
Mensajes: 8
Antigüedad: 17 años, 2 meses
Puntos: 0
Evitar caracteres repetidos

Hola a todos.
Hace poco que estoy trabajando en javascript, y ahora tengo un pequeño dilema: como puedo hacer que cuando introduzco caracteres dentro de un textbox, estos no se repitan, es decir, que si yo pongo una vez un guion cuando vuelva a pulsar la tecla de guion este no se escriba.

Gracias.
  #2 (permalink)  
Antiguo 12/02/2007, 05:20
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Re: Evitar caracteres repetidos

Hola joancmbb. Bienvenido al foro.

Prueba este código:

Código:
<html>
<head>
<script type="text/javascript">
function validar(e,txt) {
  tecla = (document.all) ? e.keyCode : e.which;
  tecla = String.fromCharCode(tecla);
  return (txt.indexOf(tecla)==-1);
}
</script>
</head>
<body>
<input type="text" onkeypress = "return validar(event,this.value)" />
</body>
</html>
Saludos,
  #3 (permalink)  
Antiguo 12/02/2007, 08:07
 
Fecha de Ingreso: febrero-2007
Mensajes: 8
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Evitar caracteres repetidos

Hola Javier, este codigo va bien si son letras, pero lo he intentado con el guion y pone mas de uno.
Como puedo hacerlo para que solo coja un solo -.

Gracias
  #4 (permalink)  
Antiguo 12/02/2007, 08:28
 
Fecha de Ingreso: febrero-2007
Mensajes: 8
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Evitar caracteres repetidos

Hola Javi ya lo he solucionado, he creado una variable para la tecla en cuestion y ya va esta
gracias por todo.
  #5 (permalink)  
Antiguo 12/02/2007, 09:07
 
Fecha de Ingreso: febrero-2007
Mensajes: 8
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Evitar caracteres repetidos

Hola javi despues de mirarlo y darle un par de vueltas vuelvo a estar encallado; yo tengo el siguiente codigo:

function nomesnumeros(e)
{
var key;

tecla = (document.all) ? e.keyCode : e.which;
tecla = String.fromCharCode(tecla);

if(window.event) // IE
{
key = e.keyCode;
}
else if(e.which) // Netscape/Firefox/Opera
{
key = e.which;
}
if ((key < 48 || key > 57 || key == 40 || key == 41 || key == 44) && key !== 45 && key !== 8)
{
return false;
}
return (document.getElementById("i_ReserNum").value.index Of(tecla)==-1);
return true;
}

Asi lo que hago es que solo se puedan poner numeros, borrar y el guion, el problema que tengo ahora, es que solo me deja poner un caracter de cada uno, es decir que solo puedo poner un 1, o un dos, etc y yo lo unico que quiero es dejar ponder solo un guion y poner todos los numeros que quiera.

gracias.
  #6 (permalink)  
Antiguo 12/02/2007, 09:44
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
Re: Evitar caracteres repetidos

Este sencillo ejemplo con expresiones regulares te eliminará los caracteres cualquiera repetidos.

Código:
<input type="text" value="xxxuumba wummba" onblur="mirar(this)" />

<script>

function mirar(obj) {
	obj.value=obj.value.replace( /(.)\1*/g, "$1" );
}

</script>
Pero para hacer que los guiones sí y otras cosas no habría que hacer excepciones...
__________________
- 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; 12/02/2007 a las 12:49 Razón: Me he vuelto a olvidar que la etiqueta [ P H P ] elimina las contrabarras de las expresiones regulares...
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 22:48.