Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Javascript si caracteres son distintos a...

Estas en el tema de Javascript si caracteres son distintos a... en el foro de Javascript en Foros del Web. Hola buenas, tengo una duda: Tengo una función que lee los caracteres introducidos en un input (html) y si los caracteres coinciden con la lista, ...
  #1 (permalink)  
Antiguo 26/02/2013, 16:04
 
Fecha de Ingreso: febrero-2013
Mensajes: 119
Antigüedad: 11 años, 2 meses
Puntos: 2
Javascript si caracteres son distintos a...

Hola buenas, tengo una duda:

Tengo una función que lee los caracteres introducidos en un input (html) y si los caracteres coinciden con la lista, salta un mensaje en el navegador, aquí el código:
Código:
var iChars = "ABCDEFGHIJKLMNOPQRSTVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_";
    for (var i = 0; i < document.formulario.usuario_nombre.value.length; i++) {
    if (iChars.indexOf(document.formulario.usuario_nombre.value.charAt(i)) != -1) {
        alert ("Your username has special characters. \nThese are not allowed.\n Please remove them and try again.");
		document.formulario.usuario_nombre.focus()
        return false;
    }
}
Pero lo que quiero es lo contrario, osea, si el input contiene un caracter que NO ESTE EN LA LISTA, que salga el mensaje..

Cómo hacerlo? Gracias de antemano
  #2 (permalink)  
Antiguo 26/02/2013, 16:10
Avatar de Reedyseth  
Fecha de Ingreso: enero-2009
Ubicación: Chihuahua, México
Mensajes: 419
Antigüedad: 15 años, 2 meses
Puntos: 36
Respuesta: Javascript si caracteres son distintos a...

Puedes utilizar una expresion regular y la evaluas, en vez de iChars !!
__________________
Reedyseth
Te ayudo? No olvides dar un +
blog:http://behstant.com/blog
En el blog:Tutoriales de Desarrollo Web PHP, Javascript, BD y más.
  #3 (permalink)  
Antiguo 26/02/2013, 16:11
 
Fecha de Ingreso: febrero-2013
Mensajes: 119
Antigüedad: 11 años, 2 meses
Puntos: 2
Respuesta: Javascript si caracteres son distintos a...

Cita:
Iniciado por Reedyseth Ver Mensaje
Puedes utilizar una expresion regular y la evaluas, en vez de iChars !!
Cómo sería? lo siento es que soy principiante en Javascript.
  #4 (permalink)  
Antiguo 26/02/2013, 17:03
Avatar de ryugen
Colaborador
 
Fecha de Ingreso: agosto-2008
Ubicación: Rosario, Santa Fe
Mensajes: 350
Antigüedad: 15 años, 7 meses
Puntos: 187
Respuesta: Javascript si caracteres son distintos a...

En realidad la función indexOf devuelve un valor mayor o igual a cero si lo que estas buscando fue encontrado (el número valor mayor o igual a cero corresponde a su indice dentro del arreglo) sino devuelve -1.

Entonces en tu caso ...
Código Javascript:
Ver original
  1. if (iChars.indexOf(document.formulario.usuario_nombre.value.charAt(i)) != -1)

estas diciendo "si el caracter i en usuario_nombre se encuentra en iChars", cuando lo que tu realmente quieres decir es todo lo contrario "si el caracter i en usuario_nombre no se encuentra en iChars" entoces necesitarías evaluar por lo siguiente:

Código Javascript:
Ver original
  1. if (iChars.indexOf(document.formulario.usuario_nombre.value.charAt(i)) === -1)
  #5 (permalink)  
Antiguo 26/02/2013, 17:05
 
Fecha de Ingreso: febrero-2013
Mensajes: 119
Antigüedad: 11 años, 2 meses
Puntos: 2
Respuesta: Javascript si caracteres son distintos a...

Cita:
Iniciado por ryugen Ver Mensaje
En realidad la función indexOf devuelve un valor mayor o igual a cero si lo que estas buscando fue encontrado (el número valor mayor o igual a cero corresponde a su indice dentro del arreglo) sino devuelve -1.

Entonces en tu caso ...
Código Javascript:
Ver original
  1. if (iChars.indexOf(document.formulario.usuario_nombre.value.charAt(i)) != -1)

estas diciendo "si el caracter i en usuario_nombre se encuentra en iChars", cuando lo que tu realmente quieres decir es todo lo contrario "si el caracter i en usuario_nombre no se encuentra en iChars" entoces necesitarías evaluar por lo siguiente:

Código Javascript:
Ver original
  1. if (iChars.indexOf(document.formulario.usuario_nombre.value.charAt(i)) === -1)
Perfecto! Sabía que era muy sencillo pero no lo veía... Muchas gracias!!!
  #6 (permalink)  
Antiguo 26/02/2013, 18:35
Avatar de Reedyseth  
Fecha de Ingreso: enero-2009
Ubicación: Chihuahua, México
Mensajes: 419
Antigüedad: 15 años, 2 meses
Puntos: 36
Respuesta: Javascript si caracteres son distintos a...

Bueno como te habia mencionado existe tambien otra forma con expresiones regulares, y para no dejar el tema nada mas dicho aqui te lo presento:

Este es el javascript que va a evaluar el texto que pongas:
Código Javascript:
Ver original
  1. var btnVerificar = document.getElementById("btnVerificar");
  2.  
  3. btnVerificar.onclick = function () {
  4.     var userName = document.getElementById("usuario").value;    
  5.     alert(userName);
  6.     var regexp = /^[a-zA-Z0-9-_]+$/; // Expresion que me permite ingresar una cadena alfanumerica sin espacios y que tenga '-' y '_'
  7.     if (userName.search(regexp) == -1) {
  8.         alert("Incorrecto");
  9.     } else {
  10.         alert("Correcto");
  11.     }
  12. }

Este es el html que se usa:
Código HTML:
Ver original
  1. <input id="usuario" />
  2. <button id="btnVerificar">Verificar</button>

Y aqui puedes ver como funciona:

http://fiddle.jshell.net/xnJLQ/

como puedes ver es un codigo mas limpio el usar expresiones regulares para evaluar cierta informacion, y vas a ver que generalmente para evaluar un campo, cuando se hace con programacion mas limpia siempre vas a recurrir a las expresiones regulares, espero que te entre el interes,

Saludos !!
__________________
Reedyseth
Te ayudo? No olvides dar un +
blog:http://behstant.com/blog
En el blog:Tutoriales de Desarrollo Web PHP, Javascript, BD y más.

Etiquetas: caracteres, input, limitar
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 12:59.