2010-10-04 22 views

Respuesta

64

Yo usaría CSS para esto.

Simplemente agregue text-transform: uppercase a su estilo, y luego en el lado del servidor puede convertirlo a mayúsculas.

input { 
    text-transform: uppercase; 
} 
+3

Puede agregar una clase, o este estilo, programáticamente con jQuery si lo desea, pero esto es probablemente lo que necesita. –

+0

enfoque interesante – mcgrailm

+0

+1, bueno, yo también estaba pensando en todo tipo de soluciones jquery/js, pero esto es mejor – Michel

13
$('input[type=text]').keyup(function() { 
    $(this).val($(this).val().toUpperCase()); 
}); 
+0

-1 Sólo los cambios después de perder el foco, no se mientras escribes http://jsfiddle.net/XJKgs/ – Greg

+0

El punto válido, se debe combinar con la solución de Brandon para cambiarlo adecuadamente del lado del cliente. Cambió ligeramente el código para actualizar al presionar las teclas. – Gazler

+6

Quité mi downvote porque ahora hace lo que pide el OP. Pero si fuera un usuario de un sitio web que hizo este cambio de "configuración", ** buscaría a la persona responsable **. Ver las letras cambiar mientras escribe es desorientador, y tratar de volver a editar lo que escribió es frustrante porque el cursor se mueve hacia el final. http://jsfiddle.net/HPapz/1/ – Greg

1

Es posible que tenga que utilizar la combinación de estos.

utilizando el estilo text-transform solo representa el tipo en mayúsculas, aunque el valor puede ser minúsculas.

El javascript sólo cambiar el texto actual a superior una vez que los cambios en el campo o se pierde el enfoque

puede utilizar jQuery de gazler o simplemente en línea Javascript

por ejemplo, onblur = 'javascript: this.value = this.value.toUpperCase();'

Esto significa que el valor del texto aparecerá en mayúscula y en realidad será mayúscula cuando el valor cambie/el control pierda el foco.

HTH Sam

+0

puedo usar onKeyUp – randomizertech

+0

El único problema con onblur es que si el usuario simplemente pulsa la tecla Intro, por ejemplo, para enviar un formulario, el texto no se verá en mayúscula. – Joseph

5

Uso
oninput='this.value=this.value.toUpperCase();
Este evento es sólo para estos casos, es despedido después de la entrada del usuario (pulsación de tecla), pero antes de actualizar (valor de visualización), por lo que con este texto escrito no parpadeará durante la conversión, y el valor también es correcto (no es como usar solo el estilo para alterar la visualización sin cambiar los datos reales).

0

Para aprovechar @ respuesta de Gazler, una solución mejorada que teclas mejores tiradores modificadoras (asumiendo que tiene un marcador de posición de mayúsculas y minúsculas y no se puede establecer text-transform: uppercase;):

$('.search-input input[type=text]').keyup(function() { 
    var v = $(this).val(); 
    var u = v.toUpperCase(); 
    if(v != u) $(this).val(u); 
}) 
Cuestiones relacionadas