Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: Leguim en 27 Septiembre 2019, 16:00 pm



Título: [Resuelto] [Pregunta]: Primer letra de un input en mayuscula (javascript)
Publicado por: Leguim en 27 Septiembre 2019, 16:00 pm
Buenos días,
estoy haciendo un input donde se guardará el nombre de una persona y estoy teniendo un problemita, quiero que la primer letra que se ingrese en un input se transforme en mayúscula (ya se que esto es puede hacer luego del lado del servidor con php) pero para mejorar un poquito frontend se me ocurrió hacerlo de esta forma.

Código
  1.        form_registry.reg_name.addEventListener('keyup', function()
  2.     {
  3.     form_registry.reg_name.value = String(form_registry.reg_name.value).replace(/[^a-zA-ZñÑáéíóúÁÉÍÓÚ]+/g, '');
  4.                 form_registry.reg_name.value = form_registry.reg_name.value.substring(0, 1).toUpperCase();
  5.     });
  6.  

Bueno la primer linea donde se usan las expresiones regulares simplemente es que si el usuario escribe una letra, símbolo, o algo que no sean letras se va a borrar... luego la segunda  dice que la primer letra la transforme en una mayúscula pero no entiendo que puede estar pasando ya que hay como un problema de "compatibilidad" entre las dos lineas...


Título: Re: [Pregunta]: Primer letra de un input en mayuscula (javascript)
Publicado por: engel lex en 27 Septiembre 2019, 18:56 pm
no es necesario irse a regex para esto

Código:
var string = .... //obtener del input
string.charAt(0).toUpperCase() + string.slice(1);


Título: Re: [Pregunta]: Primer letra de un input en mayuscula (javascript)
Publicado por: Leguim en 27 Septiembre 2019, 19:37 pm
El regex lo uso para la validaciónd del lado del cliente de x nombre que se ingrese, para que no me escriban samuel93 sino que sea samuel, y con esto que quiero  hacer sea Samuel.
Por supuesto no sólo estoy haciendo validaciones del lado del cliente sino que también del servidor. Entonces me da este problema de compatibilidad entre la validación y sistemita de las mayusculas.

Intente cambiando de orden las dos líneas de código (mayúsculas arriba y regex abajo, y viceversa)

Si esto no tiene solución, les agradecería si me podrían decir porque ocurre esto. Porque desde donde yo lo veo no hay razón para que esto no funcione.


Título: Re: [Pregunta]: Primer letra de un input en mayuscula (javascript)
Publicado por: engel lex en 27 Septiembre 2019, 21:37 pm
Citar
El regex lo uso para la validaciónd del lado del cliente de x nombre que se ingrese, para que no me escriban samuel93 sino que sea samuel, y con esto que quiero  hacer sea Samuel.

Código
  1. var string = .... //obtener del input
  2. string  = cadena.replace(/([^a-z\s]+)/gi, ''); //
  3. strin.charAt(0).toUpperCase() + string .slice(1);


[^a-z\s]+ -> todo lo que no sea de la a a la z (ascii), ni espacio
/gi global, insensitivo a mayusculas


Título: Re: [Pregunta]: Primer letra de un input en mayuscula (javascript)
Publicado por: Leguim en 27 Septiembre 2019, 22:23 pm
Hola, engelx!
Intente de varías formas con tu código pero no pasaba nada (no daba errores) pero tampoco funcionaba, no hacia nada (en cuanto a mayúscula me refiero, después la expresión regular funcionaba)...

De igual forma pude resolverlo, esto fue lo que hice... (saque la base del código de un blog y lo simplifique)

Código
  1. form_registry.reg_name.value = String(form_registry.reg_name.value).replace(/[^a-zA-ZñÑáéíóúÁÉÍÓÚ]+/g, '');
  2.            form_registry.reg_name.value = form_registry.reg_name.value.substring(0, 1).toUpperCase() + form_registry.reg_name.value.substring(1).toLowerCase();
  3.  

¡Ya está resuelto! ¡Muchas gracias!