Campos de Texto - JavaScript
Para inserção de informações textuais simples, utilizamos elementos input
<input type="text" name="key" size="10" maxlength="15" value="hello world" />
Este elemento suporta uma série de eventos, como:
: ocorre quando o campo recebe foco.focus
: ocorre quando o campo perde o foco.blur
: acontece quando o valor do campo é alterado.change
: ocorre com cada alteração no valor do campo.input
: acontece quando o texto dentro do campo é selecionado.select
: ocorre ao pressionar uma tecla.keydown
: acontece ao pressionar teclas que produzem caracteres.keypress
: ocorre quando uma tecla pressionada é liberada.keyup
Consideremos a aplicação de alguns eventos:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Programício</title>
</head>
<body>
<form name="search">
<input type="text" name="key" placeholder="Digite a chave" />
<input type="button" name="print" value="Imprimir" />
</form>
<div id="printBlock"></div>
<script>
const keyBox = document.search.key;
// tratamento da mudança de texto
function onchange(e) {
const printBlock = document.getElementById("printBlock");
const val = e.target.value;
printBlock.textContent = val;
}
// tratamento da perda de foco
function onblur(e) {
const text = keyBox.value.trim();
keyBox.style.borderColor = text === "" ? "red" : "green";
}
// ao receber foco
function onfocus(e) {
keyBox.style.borderColor = "blue";
}
keyBox.addEventListener("change", onchange);
keyBox.addEventListener("blur", onblur);
keyBox.addEventListener("focus", onfocus);
</script>
</body>
</html>
Aqui, três manipuladores são anexados ao campo de texto para os eventos blur
focus
change
change
printBlock
change
O tratamento do evento blur
Além do evento change
input
change
input
const keyBox = document.search.key;
// tratamento da mudança de texto
function oninput(e) {
const printBlock = document.getElementById("printBlock");
const val = e.target.value;
printBlock.textContent = val;
}
keyBox.addEventListener("input", oninput);
Campo de Senha
Além do campo de texto comum, há campos especiais para entrada, como o input
<input type="password" name="password" />
No entanto, o valor inserido não é criptografado, e podemos obtê-lo facilmente:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>PROGRAMICIO>COM</title>
</head>
<body>
<form name="loginForm">
<input type="password" name="password" />
</form>
<div id="printBlock"></div>
<script>
const passwordBox = document.loginForm.password;
// tratamento da mudança de texto
function oninput(e) {
const printBlock = document.getElementById("printBlock");
printBlock.textContent = e.target.value;
}
passwordBox.addEventListener("input", oninput);
</script>
</body>
</html>
Campo Oculto
Se precisamos que um valor esteja presente no formulário mas oculto para o usuário, podemos utilizar campos ocultos:
<input type="hidden" name="id" value="345" />
Normalmente, não se processam eventos em campos ocultos, mas, assim como com outros elementos, podemos obter ou alterar seu valor com JavaScript.
Elemento Textarea
Para criar campos de texto multilinha, usamos o elemento textarea
<textarea rows="15" cols="40" name="textArea"></textarea>
Este elemento gera os mesmos eventos que o campo de texto comum:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Programício</title>
</head>
<body>
<form name="search">
<textarea rows="7" cols="40" name="message"></textarea>
</form>
<div id="printBlock"></div>
<script>
const messageBox = document.search.message;
// tratamento do evento de pressionamento de tecla
function onkeypress(e) {
const printBlock = document.getElementById("printBlock");
const val = String.fromCharCode(e.keyCode);
printBlock.textContent += val;
}
function onkeydown(e) {
if(e.keyCode === 8){ // se a tecla Backspace for pressionada
const printBlock = document.getElementById("printBlock"),
length = printBlock.textContent.length;
printBlock.textContent = printBlock.textContent.substring(0, length - 1);
}
}
messageBox.addEventListener("keypress", onkeypress);
messageBox.addEventListener("keydown", onkeydown);
</script>
</body>
</html>
Aqui, manipuladores são anexados ao campo de texto para os eventos keypress
keydown
keypress
const val = String.fromCharCode(e.keyCode);
Então, o caractere é adicionado ao conteúdo do bloco printBlock
O evento keypress
keypress
keydown
printBlock