Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Galera,
Como faço pra mudar o keyCode de uma tecla usando javascript?
Eu quero forçar a digitação num textinput a ficar tudo maiúscula no momento da digitação.
Eu já consegui detectar quais teclas foram pressionadas e quando são letras minusculas (charcode 97 a 122). Porém não consigo convertê-las.
Abaixo o link para o código do que to fazendo e também a função que trata da tecla pressionada:
http://plnkr.co/edit/XRHFFIKF7K8qacDH3GIW?p=preview
function keyPressed(event){
if(event.charCode >= 97 && event.charCode <= 122){
// a-z --> Converter para A-Z
return String.fromCharCode( event.charCode - 32 );
}
}>
cara dessa forma que você quer fazer ele da um pequeno erro.
você digita minusculo ai muda para maiusculo, mas o usuario ver ele mudando, ou seja não fica legal
no meu caso uso assim
uso css nos forms assim
input,textarea,select,option{text-transform:uppercase;}
e caso queira inserir esses registros no banco de dados, e esteja usando php,
coloco assim
$valor = mb_strtoupper($valor,'UTF-8');
dessa maneira o cliente ainda vai continuar digitando minusculo, mas o css esta dando a impressão que esta maiúsculo.
e vai ser realmente convertido antes de inserir no banco de dados.
eu uso dessa forma em meu sistema e funciona perfeitamente.
se ajudou clica ai =>/applications/core/interface/imageproxy/imageproxy.php?img=http://forum.imasters.com.br/public/style_images/imasters/rep_up.png&key=69f1cee84b0cec2770cf4978eb26283900cc6cd53272a52e2e7da158a809e582" alt="rep_up.png" /> e marca como resolvido.
Saquei... deu certinho... e bem mais eficiente.
Valeu!
por nada :)
Só complementando...
Eu tenho meu backend em PHP pra gravar os dados como eles vêm, então pra não precisar alterar o código da minha classe no backend eu to fazendo a conversão pra UpperCase direto no javascript. E aí entra a mágica pois estou usando AngularJS.
Foi só criar um $watch para observar quando ocorrem alterações:
$scope.$watch('usuario', function(data) {
if(data !== null){
if(typeof data.nome !== 'undefined')
data.nome = data.nome.toUpperCase();
if(typeof data.login !== 'undefined')
data.login = data.login.toUpperCase();
}
}, true);
Sua dica foi fundamental pra me abrir os olhos e criar essa lógica... Pode até ter ficado com mais código, mas o resultado é exatamente o que eu preciso...
1- Que o usuário veja sempre em maiúsculo (então usei o text-transform conforme você indicou)
2- Nao queria mexer no meu backend, então implementei o $watch no angular e funcionou certinho.
É claro que eu poderia fazer a conversão pra UpperCase no momento que fosse enviar os dados, mas ficou muito mais eficiente dessa forma.
cara dessa forma que você quer fazer ele da um pequeno erro.
você digita minusculo ai muda para maiusculo, mas o usuario ver ele mudando, ou seja não fica legal
no meu caso uso assim
uso css nos forms assim
input,textarea,select,option{text-transform:uppercase;}
e caso queira inserir esses registros no banco de dados, e esteja usando php,
coloco assim
$valor = mb_strtoupper($valor,'UTF-8');
dessa maneira o cliente ainda vai continuar digitando minusculo, mas o css esta dando a impressão que esta maiúsculo.
e vai ser realmente convertido antes de inserir no banco de dados.
eu uso dessa forma em meu sistema e funciona perfeitamente.
se ajudou clica ai =>/applications/core/interface/imageproxy/imageproxy.php?img=http://forum.imasters.com.br/public/style_images/imasters/rep_up.png&key=69f1cee84b0cec2770cf4978eb26283900cc6cd53272a52e2e7da158a809e582" alt="rep_up.png" /> e marca como resolvido.