Foros del Web » Programando para Internet » Jquery »

[SOLUCIONADO] Verificar nombre de usuario

Estas en el tema de Verificar nombre de usuario en el foro de Jquery en Foros del Web. Hola gente, pues tengo un problema quisiera añadir que no te deje continuar si lleva en el nombre de usuario MOD-... @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código Javascript ...
  #1 (permalink)  
Antiguo 08/02/2014, 05:55
 
Fecha de Ingreso: diciembre-2012
Ubicación: Murcia
Mensajes: 329
Antigüedad: 11 años, 3 meses
Puntos: 4
Verificar nombre de usuario

Hola gente, pues tengo un problema quisiera añadir que no te deje continuar si lleva en el nombre de usuario MOD-...

Código Javascript:
Ver original
  1. function checkuser(){
  2.     if ($("#username").val().length > 15) {
  3.         $('#username').css({border:"3px solid #b71818"});
  4.         $('#i1').css({color:'#b71818'}).html('No puede ser mayor de 15 caracteres');
  5.     } else {
  6.         $('#username').css({border:"3px solid #4a504b"});
  7.         $.get('http://localhost/ajax/checkusername.php?username='+$('#username').val(), function(data) {
  8.             if(parseFloat(data)==1){
  9.                 $('#username').css({border:"3px solid #b71818"});
  10.                 $('#i1').css({color:'#b71818'}).html('Este nombre de usuario ya está en uso!');
  11.             } else {
  12.                 next();
  13.             }
  14.         });
  15.     }
  16. }

Queria añadir para cuando pongan MOD-Username salte un error como los del codigo... Me dijeron que hiciera como para verificar un e-mail /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|} pero yo de eso no entiendo..


Gracias de antemano.

PD: Soy novato en jquery, es la primera vez que trabajo con este lenguaje.
  #2 (permalink)  
Antiguo 08/02/2014, 09:39
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.551
Antigüedad: 12 años, 4 meses
Puntos: 977
Respuesta: Verificar nombre de usuario

Eso que ves son expresiones regulares, te sugiero leer sobre ellas porque son realmente muy pero muy útiles, sobretodo en casos de validaciones.

Este problema lo resolverías utilizando una expresión regular:

Código Javascript:
Ver original
  1. var expresion = /^MOD-(.*)$/;
  2.  
  3. if (expresion.test($("#username").val())) {
  4.     alert("MAL");
  5. }
  6. else{
  7.     //Continuas con las instrucciones
  8. }

Con la expresión /^MOD-(.*)$/, indico que el bloque de texto a buscar en el valor de la caja "username", debe empezar (^) por "MOD-" y debe seguir cualquier caracter (.), de cero a más (*), hasta el final de la cadena ($). Con el método test, busco dicha expresión en el valor de la caja "username", de encontrarse la coincidencia, se muestra una alerta con el mensaje "MAL", caso contrario, sigues con el bloque de instrucciones.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #3 (permalink)  
Antiguo 08/02/2014, 14:52
 
Fecha de Ingreso: diciembre-2012
Ubicación: Murcia
Mensajes: 329
Antigüedad: 11 años, 3 meses
Puntos: 4
Respuesta: Verificar nombre de usuario

Cita:
Iniciado por Alexis88 Ver Mensaje
Eso que ves son [URL="http://es.wikipedia.org/wiki/Expresi%C3%B3n_regular"][B]expresiones regulares[/B][/URL], te sugiero leer sobre ellas porque son realmente muy pero muy útiles, sobretodo en casos de validaciones.

Este problema lo resolverías utilizando una expresión regular:

Código Javascript:
Ver original
  1. var expresion = /^MOD-(.*)$/;
  2.  
  3. if (expresion.test($("#username").val())) {
  4.     alert("MAL");
  5. }
  6. else{
  7.     //Continuas con las instrucciones
  8. }

Con la expresión /^MOD-(.*)$/, indico que el bloque de texto a buscar en el valor de la caja "username", debe empezar (^) por "MOD-" y debe seguir cualquier caracter (.), de cero a más (*), hasta el final de la cadena ($). Con el método [URL="http://www.w3schools.com/jsref/jsref_regexp_test.asp"][B]test[/B][/URL], busco dicha expresión en el valor de la caja "username", de encontrarse la coincidencia, se muestra una alerta con el mensaje "MAL", caso contrario, sigues con el bloque de instrucciones.

Saludos
Muchísimas gracias. :)

Otra cosa con jquery se puede verificar si contiene Espacios en Blanco?
  #4 (permalink)  
Antiguo 08/02/2014, 15:33
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.551
Antigüedad: 12 años, 4 meses
Puntos: 977
Respuesta: Verificar nombre de usuario

Los espacios en blanco en expresiones regulares equivalen a esto: \s

De modo que solamente necesitas insertar eso en la expresión regular para indicar que también se deben buscar espacios en blanco.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #5 (permalink)  
Antiguo 08/02/2014, 16:26
 
Fecha de Ingreso: diciembre-2012
Ubicación: Murcia
Mensajes: 329
Antigüedad: 11 años, 3 meses
Puntos: 4
Respuesta: Verificar nombre de usuario

Cita:
Iniciado por Alexis88 Ver Mensaje
Los espacios en blanco en expresiones regulares equivalen a esto: \s

De modo que solamente necesitas insertar eso en la expresión regular para indicar que también se deben buscar espacios en blanco.

Saludos
Código Javascript:
Ver original
  1. function checkuser(){
  2.     var expresion = /^[MOD-|mod-|ADM|adm](\s.*)+$/;
  3.     if ($("#username").val().length < 1) {
  4.         $('#username').css({border:"3px solid #b71818"});
  5.         $('#i1').css({color:'#b71818'}).html('No puedes dejar el campo en blanco');
  6.         } else if
  7.     ($("#username").val().length > 15) {
  8.         $('#username').css({border:"3px solid #b71818"});
  9.         $('#i1').css({color:'#b71818'}).html('No puede ser mayor de 15 caracteres');
  10.         } else if (expresion.test($("#username").val())) {
  11.             $('#username').css({border:"3px solid #b71818"});
  12.             $('#i1').css({color:'#b71818'}).html('No puede contener la palabra MOD');
  13.         } else {
  14.         $('#username').css({border:"3px solid #4a504b"});
  15.         $.get('http://localhost/ajax/checkusername.php?username='+$('#username').val(), function(data) {
  16.             if(parseFloat(data)==1){
  17.                 $('#username').css({border:"3px solid #b71818"});
  18.                 $('#i1').css({color:'#b71818'}).html('Este nombre de usuario ya está en uso!');
  19.             } else {
  20.                 next();
  21.             }
  22.         });
  23.     }
  24. }

Vale acabo de añadirlo, pero tengo un problema y es el de los espacios en blanco si coloco Hola Lucas no salta el error...

Última edición por Jose789; 08/02/2014 a las 16:49
  #6 (permalink)  
Antiguo 08/02/2014, 20:09
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.551
Antigüedad: 12 años, 4 meses
Puntos: 977
Respuesta: Verificar nombre de usuario

Es que estás aplicando mal las expresiones regulares, porque estás buscando que la cadena empiece sí o sí por "Mod-", "mod-", "ADM" o "adm" (por cierto, debiste colocar los valores opciones entre paréntesis, no entre corchetes) y luego debe continuar un espacio seguido de cualquier caracter que debe aparecer cero o más veces y todo ese subconjunto debe aparecer una o más veces.

Ahora bien, supongo que lo que estás tratando de evitar es que el texto ingresado no sea de cualquiera de estas formas:

Cita:
Mod-ejemplo
mod-ejemplo
ADMejemplo
admejemplo
ejem plo (con el espacio en medio)
Si fuera así, puedes trabajarlo con dos grupos de expresiones regulares, para que no te compliques.

Código Javascript:
Ver original
  1. var expresion1 = /^(Mod-|mod-|Adm|adm)(.*)$/,
  2.     expresion2 = /(.+)\s(.+)?/;
  3.  
  4. if (expresion1.test($("#username").val()) || expresion2.test($("#username").val())){
  5.     alert("MAL");
  6. }
  7. else{
  8.     //Continuas con las instrucciones
  9. }

En la primera expresión, buscas cualquiera de los 4 valores indicados y seguido de cualquier caracterer, es decir, no se permitirán textos como los que mostré más arriba, mientras que la segunda expresión, buscas cualquier caracter, de una a más ocurrencias (apariciones), seguido de un espacio y cualquier otro caracter (incluidos los propios espacios, para que no se puedan poner dos o más espacios y saltarse la validación), de uno a más, pero esta segunda parte es opcional, es decir, buscará "ejem plo" como "ejem ". Buscas ambas expresiones en el texto, de darse la coincidencia en cualquiera de ambas, se muestra la alerta de advertencia, caso contrario, sigues con las instrucciones de tu aplicación.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #7 (permalink)  
Antiguo 09/02/2014, 04:35
 
Fecha de Ingreso: diciembre-2012
Ubicación: Murcia
Mensajes: 329
Antigüedad: 11 años, 3 meses
Puntos: 4
Respuesta: Verificar nombre de usuario

Cita:
Iniciado por Alexis88 Ver Mensaje
Es que estás aplicando mal las expresiones regulares, porque estás buscando que la cadena empiece sí o sí por "Mod-", "mod-", "ADM" o "adm" (por cierto, debiste colocar los valores opciones entre paréntesis, no entre corchetes) y luego debe continuar un espacio seguido de cualquier caracter que debe aparecer cero o más veces y todo ese subconjunto debe aparecer una o más veces.

Ahora bien, supongo que lo que estás tratando de evitar es que el texto ingresado no sea de cualquiera de estas formas:



Si fuera así, puedes trabajarlo con dos grupos de expresiones regulares, para que no te compliques.

Código Javascript:
Ver original
  1. var expresion1 = /^(Mod-|mod-|Adm|adm)(.*)$/,
  2.     expresion2 = /(.+)\s(.+)?/;
  3.  
  4. if (expresion1.test($("#username").val()) || expresion2.test($("#username").val())){
  5.     alert("MAL");
  6. }
  7. else{
  8.     //Continuas con las instrucciones
  9. }

En la primera expresión, buscas cualquiera de los 4 valores indicados y seguido de cualquier caracterer, es decir, no se permitirán textos como los que mostré más arriba, mientras que la segunda expresión, buscas cualquier caracter, de una a más ocurrencias (apariciones), seguido de un espacio y cualquier otro caracter (incluidos los propios espacios, para que no se puedan poner dos o más espacios y saltarse la validación), de uno a más, pero esta segunda parte es opcional, es decir, buscará "ejem plo" como "ejem ". Buscas ambas expresiones en el texto, de darse la coincidencia en cualquiera de ambas, se muestra la alerta de advertencia, caso contrario, sigues con las instrucciones de tu aplicación.

Saludos
Gracias :) ya voy entiendo un poco más de expresiones regulares..

Pero el problema es que si en el campo username hago 1 separación no salta el error. pero en cambio si pongo Hola lucas si salta...

Lo que quiero decir es que si pongo: 'espacio'Hola. lo valida y no salta el error.
  #8 (permalink)  
Antiguo 09/02/2014, 11:59
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.551
Antigüedad: 12 años, 4 meses
Puntos: 977
Respuesta: Verificar nombre de usuario

Para que no tengas problemas de espacios al inicio y al final del texto que por error o a propósito el usuario haya insertado, elimínalos con la función trim y luego haces la validación.

Código Javascript:
Ver original
  1. var expresion1 = /^(Mod-|mod-|Adm|adm)(.*)$/,
  2.     expresion2 = /(.+)\s(.+)?/,
  3.     valor = $("#username").val().trim();
  4.  
  5. if (expresion1.test(valor) || expresion2.test(valor)){
  6.     alert("MAL");
  7. }
  8. else{
  9.     //Continuas con las instrucciones
  10. }

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Etiquetas: html, javascript, nombre, php, usuario, verificar
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 23:31.