ybc126
Estoy usando el siguiente atributo de estilo para configurar la entrada del usuario en mayúsculas para que cuando el usuario comience a escribir en el cuadro de texto, por ejemplo railway
entonces debe cambiarse a mayúsculas como RAILWAY
sin que el usuario tenga que presionar el botón Bloq Mayús.
Este es el código que estoy usando para la entrada:
<input type = "text" class = "normal" name = "Name" size = "20" maxlength = "20"> <img src="https://stackoverflow.com/questions/11100041/images/tickmark.gif" border="0" style="text-transform:uppercase"/>
Pero no obtengo el resultado deseado al usar este atributo.
caída libre
has puesto el style
atributo en el <img>
etiqueta, en lugar de la <input>
.
Tampoco es una buena idea dejar espacios entre el nombre del atributo y el valor…
<input type="text" class="normal"
name="Name" size="20" maxlength="20"
style="text-transform:uppercase" />
<img src="../images/tickmark.gif" border="0" />
Tenga en cuenta que esta transformación es puramente visual, y no cambia el texto que se envía en POST.
NOTA: Si desea configurar el valor de entrada real en mayúsculas y asegúrese de que el texto enviado por el formulario esté en mayúsculas, puede usar el siguiente código:
<input oninput="this.value = this.value.toUpperCase()" />
-
Tenga en cuenta que si envía estos datos a través de una POST, los enviará como los haya escrito, no como se muestran en la pantalla.
– Vicente Poirier
28 de julio de 2015 a las 19:04
-
@freefaller, cambió todas las entradas a mayúsculas, pero insertar en mysql es texto en minúsculas, ¡cómo cambiar la letra mayúscula!
– David Jaw Hpan
11 de noviembre de 2015 a las 4:45
-
@David, mira el comentario anterior. la transformada es puramente visual. No cambia el caso del texto subyacente que se envía de vuelta al servidor. Si quieres guardar el texto en mayúsculas debes transformarlo en el servidor antes de guardar
– caída libre
11/11/2015 a las 17:20
-
Esta no es una solución completa, ya que el marcador de posición ahora está en mayúsculas (que en la mayoría de los casos no debería ser). No hay otra forma que usar JavaScript.
– tomerico
22 de marzo de 2016 a las 19:05
-
Los futuros lectores que deseen que los cambios se realicen en función del valor en lugar de puramente visuales, consulten la respuesta de Burak Tokak.
– Dinei
31 mayo 2017 a las 20:15
Yehuda Schwartz
Creo que la solución más robusta que asegurará que se publique en mayúsculas es usar el método oninput en línea como:
<input oninput="this.value = this.value.toUpperCase()" />
EDITAR
Algunas personas se han quejado de que el cursor salta al final al editar el valor, por lo que esta versión ligeramente ampliada debería resolver eso.
<input oninput="let p=this.selectionStart;this.value=this.value.toUpperCase();this.setSelectionRange(p, p);" />
-
Eres fabuloso
– A. El-zahaby
23 de septiembre de 2021 a las 18:07
burak tokak
Las respuestas con el text-transformation:uppercase
el estilo no enviará datos en mayúsculas al servidor al enviar, lo que podría esperar. Puedes hacer algo como esto en su lugar:
Para su entrada HTML use onkeydown:
<input name="yourInput" onkeydown="upperCaseF(this)"/>
En tu JavaScript:
function upperCaseF(a){
setTimeout(function(){
a.value = a.value.toUpperCase();
}, 1);
}
Con upperCaseF()
función en cada pulsación de tecla, el valor de la entrada se convertirá en su forma mayúscula.
También agregué un retraso de 1 ms para que el bloque de código de función se active después de que ocurra el evento de pulsación de tecla.
ACTUALIZAR
Por recomendación de Dinei, puede usar el evento oninput en lugar de onkeydown y deshacerse de setTimeout
.
Para su entrada HTML use oninput:
<input name="yourInput" oninput="this.value = this.value.toUpperCase()"/>
-
Uno podría usar la
input
evento en vez dekeydown
y deshacerse de lasetTimeout
solución alterna.– Dinei
31 de mayo de 2017 a las 20:12
-
Esto funciona, pero ¿cómo evitar el salto feo de minúsculas a mayúsculas?
– Jonathan Safa
15 de septiembre de 2017 a las 5:07
-
Siguiendo con la idea del “evento de entrada”, agregando este atributo al
input
elemento parece funcionar bien:oninput="this.value = this.value.toUpperCase()"
–Tommy Stanton
22 de septiembre de 2017 a las 1:04
-
@JonathanSafa Use esto además del
text-transform:uppercase
solución de estilo css anterior para que la entrada siempre aparezca en mayúsculas– miknik
28 de diciembre de 2017 a las 22:21
-
Cuando un usuario edita texto existente y coloca el cursor en otro lugar que no sea el final, el cursor saltará al final con cada carácter escrito. ¿Hay alguna manera de preservar la posición del cursor y transformar el texto a mayúsculas?
-Mike Wodarczyk
7 sep 2018 a las 16:57
El problema con la primera respuesta es que el marcador de posición también estará en mayúsculas. En caso de que desee que SOLO la entrada esté en mayúsculas, use la siguiente solución.
Para seleccionar solo un elemento de entrada que no esté vacío, coloque el atributo requerido en el elemento:
<input type="text" id="name-input" placeholder="Enter symbol" required="required" />
Ahora, para seleccionarlo, utilice el :valid
pseudo-elemento:
#name-input:valid { text-transform: uppercase; }
De esta manera, solo escribirá en mayúsculas los caracteres ingresados.
probar
<input type="text" class="normal"
style="text-transform:uppercase"
name="Name" size="20" maxlength="20">
<img src="https://stackoverflow.com/questions/11100041/images/tickmark.gif" border="0"/>
En lugar de la imagen, coloque la etiqueta de estilo en la entrada porque está escribiendo en la entrada, no en la imagen
-
Eso, sin embargo, también hace que el texto del marcador de posición esté en mayúsculas.
– Kazim Zaidi
26 de febrero de 2016 a las 15:23
Mukund Thakkar
Establezca el siguiente estilo para configurar todos los cuadros de texto en mayúsculas
input {text-transform: uppercase;}
-
Eso, sin embargo, también hace que el texto del marcador de posición esté en mayúsculas.
– Kazim Zaidi
26 de febrero de 2016 a las 15:23
Gaurish Gangwar
Usando CSS text-transform: uppercase
no cambia la entrada real, solo cambia su aspecto. Si envía los datos de entrada a un servidor, seguirán en minúsculas o como los haya ingresado. Para transformar realmente el valor de entrada, debe agregar el código javascript como se muestra a continuación:
document.querySelector("input").addEventListener("input", function(event) {
event.target.value = event.target.value.toLocaleUpperCase()
})
<input>
Aquí estoy usando toLocaleUpperCase()
para convertir input
valor 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, es posible que vea que el texto salta de minúsculas a mayúsculas a medida que escribe. Si esto te molesta, este es el momento de usar CSS, aplica input: {text-transform: uppercase;}
al archivo CSS y todo estará bien.
Como se menciona a continuación, tenga cuidado al tener espacios entre = y los valores “texto”
– Jonathan Safa
15 de septiembre de 2017 a las 5:08