El uso de CSS text-transform: uppercaseno cambia la entrada real, sino que solo cambia su aspecto. Si envía los datos de entrada a un servidor, seguirá en minúsculas o como lo haya ingresado. Para transformar realmente el valor de entrada, debe agregar el código de JavaScript de la siguiente manera:
document.querySelector("input").addEventListener("input", function(event) {
event.target.value = event.target.value.toLocaleUpperCase()
})
<input>
Aquí estoy usando toLocaleUpperCase()para convertir el inputvalor a mayúsculas. Funciona bien hasta que necesite editar lo que ingresó, por ejemplo, si ingresó ABCXYZ y ahora intenta cambiarlo a ABCLMNXYZ, se convertirá en ABCLXYZMN porque después de cada entrada el cursor salta al final.
Para superar este salto del cursor, tenemos que hacer los siguientes cambios en nuestra función:
document.querySelector("input").addEventListener("input", function(event) {
var input = event.target;
var start = input.selectionStart;
var end = input.selectionEnd;
input.value = input.value.toLocaleUpperCase();
input.setSelectionRange(start, end);
})
<input>
Ahora todo funciona como se esperaba, pero si tiene una PC lenta, puede ver que el texto salta de minúsculas a mayúsculas mientras escribe. Si esto te molesta, este es el momento de usar CSS, aplicar input: {text-transform: uppercase;}al archivo CSS y todo estará bien.