[Resuelto] [Pregunta]: Primer letra de un input en mayuscula (javascript)

Iniciado por Leguim, 27 Septiembre 2019, 16:00 PM

0 Miembros y 1 Visitante están viendo este tema.

Leguim

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 (javascript) [Seleccionar]

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


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...

engel lex

no es necesario irse a regex para esto

var string = .... //obtener del input
string.charAt(0).toUpperCase() + string.slice(1);
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

Leguim

#2
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.

engel lex

#3
CitarEl 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 (javascript) [Seleccionar]
var string = .... //obtener del input
string  = cadena.replace(/([^a-z\s]+)/gi, ''); //
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
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

Leguim

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 (javascript) [Seleccionar]

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


¡Ya está resuelto! ¡Muchas gracias!