2010-10-04 18 views

risposta

64

Vorrei usare i CSS per questo.

Basta aggiungere text-transform: uppercase allo stile, quindi sul lato server è possibile convertirlo in maiuscolo.

input { 
    text-transform: uppercase; 
} 
+3

Puoi aggiungere una classe, o questo stile, in modo programmatico con jQuery se lo desideri, ma probabilmente è ciò di cui hai bisogno. –

+0

approccio interessante – mcgrailm

+0

+1, bello, stavo anche pensando a tutti i tipi di soluzioni jquery/js, ma questo è meglio – Michel

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

-1 solo le modifiche dopo aver perso messa a fuoco, non mentre scrivi. http://jsfiddle.net/XJKgs/ – Greg

+0

Punto valido, dovrebbe essere combinato con la soluzione Brandon per cambiarlo correttamente lato client. Modificato leggermente il codice per l'aggiornamento su Keypress. – Gazler

+6

Ho rimosso il mio downvote perché ora fa quello che l'OP chiede. Ma se fossi un utente di un sito web che ha modificato questa "chiave", ** darei la caccia al responsabile **. Vedere le lettere cambiare mentre digiti è disorientante, e provare a tornare a modificare ciò che hai digitato è frustrante perché il cursore continua a spostarsi verso la fine. http://jsfiddle.net/HPapz/1/ – Greg

1

Potrebbe essere necessario utilizzare la combinazione di questi.

utilizzando lo stile di trasformazione del testo restituisce solo il tipo in maiuscolo, sebbene il valore possa essere in minuscolo.

Il javascript cambierà solo il testo attuale in alto una volta che i cambiamenti di campo o di messa a fuoco è perso

è possibile utilizzare jQuery del gazler o semplicemente in linea javascript

esempio onblur = 'javascript: this.value = this.value.toUpperCase();'

Ciò significa che il valore del testo verrà visualizzato in maiuscolo e in realtà verrà sovrascritto quando il valore cambia/il controllo perde lo stato attivo.

HTH Sam

+0

posso usare onKeyUp – randomizertech

+0

L'unico problema con onblur è che se l'utente preme semplicemente il tasto Invio, ad esempio per inviare un modulo, il testo non sarà maiuscolo. – Joseph

5

Usa
oninput='this.value=this.value.toUpperCase();
Questo evento è solo per questi casi, viene licenziato dopo l'input dell'utente (tasto premuto), ma prima di aggiornare (valore visualizzazione), quindi con questo testo digitato non sarà sfarfallio durante la conversione e anche il valore è corretto (non è come utilizzare solo lo stile per modificare la visualizzazione senza modificare i dati reali).

0

Per costruire su @ risposta di Gazler, una soluzione avanzata che le chiavi gestisce meglio modificatori (a patto che abbiate un segnaposto di maiuscole e minuscole e non è possibile impostare text-transform: uppercase;):

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