Olá.
Como faço para sempre que a letra x for digitada no meu input que é uppercase só a letra x fique lowercase?
Ex.:ENCONTRE O VALOR DE x QUANDO…
Olá.
Como faço para sempre que a letra x for digitada no meu input que é uppercase só a letra x fique lowercase?
Ex.:ENCONTRE O VALOR DE x QUANDO…
Olá amigo, você pode utilizar o método replace para troca a ocorreria de um elemento.
var frase = 'ENCONTRE O VALOR DE X QUANDO...';
var resultado = frase.replace("X","x")
console.log(resultado)
Olá Francisco,
pois é, pensei que seria assim fácil tbm, mas como o campo tem o style=“text-transform:uppercase”, a valor sempre muda para maiúsculo.
Preciso deixar al minúsculo em um input com propriedade uppercase.
Olá, tenta fazer o replace colocando um elemento html, ai no css desse novo elemento você coloca o lowercase:
<div id="changeCase">ENCONTRE O VALOR DE x QUANDO</div>
<style>
div {
text-transform: uppercase;
}
span {
text-transform: lowercase;
}
</style>
<script>
var phrase = document.querySelector('#changeCase');
var findX = /\sX\s/;
var newPhrase = phrase.innerText;
var newX = newPhrase.replace(findX, ' <span>x</span> ');
phrase.innerHTML = newX;
</script>
Eu consigo fazer isso no momento da digitação no input type=“text”?
o style desse input como upper e ao digitar só a letra x tem que ficar como lowerCase.
Vê se assim ajuda, dessa forma não pode usar o text-transform do css, se não vai sempre ficar em maiusculo.
<input type="text" id="changeCase" placeholder="Digite...">
var phrase = document.querySelector('#changeCase');
/*
* No EventListener você pode usar o:
* 'keypress' ou 'keyup'
*/
phrase.addEventListener('keypress', function(e) {
var inputValue = e.target.value;
var getLast = inputValue.split('')[inputValue.length - 1];
/*
* CONTA QUANTOS CARACTERES FORAM DIGITADOS NO INPUT.
* @ Caso tenha algum caracter,
* faz o replace do caracter digitado por ele
* mesmo em UpperCase mas,
* apenas se não for o "x".
*/
if (inputValue.length > 0) {
if (getLast === 'x' || getLast === 'X') {
e.target.value = inputValue.replace(getLast, getLast.toLowerCase());
} else {
e.target.value = inputValue.replace(getLast, getLast.toUpperCase());
}
}
});
Perfeito Bruno, bem isso que eu precisava.
Só mais uma dúvida.
Quando uso o text-transform do css quando digito um texto ele já fica maiúsculo, tem como eu fazer isso sem ser transformando letra por letra na hora de digitar, como acontece com o keyup?
Puxa, acho que não tem como.
No CSS já deixa o input todo com uppercase.
Nesse caso, o JavaScript verifica cada letra e faz a transformação. Ai teria que pesquisar melhor se tem como fazer.
Olá Bruno, consegui fazer da maneira que eu queria, segue resultado final:
<input name="yourInput"/>
<script>
var inputValue = document.getElementsByTagName("input")[0]; // just your input element
inputValue .oninput = function() {
var getLast = inputValue.value.split('')[inputValue.value.length - 1];
if (inputValue.value.length > 0) {
if (getLast === 'x' || getLast === 'X') {
inputValue.value = inputValue.value.replace(getLast, getLast.toLowerCase());
} else {
inputValue.value = inputValue.value.replace(getLast, getLast.toUpperCase());
}
}
}
</script>