Boa tarde!
Estou iniciando no Js na verdade do mundo do desenvolvimento, e gostaria de uma ajuda.
Seguinte fiz um sistema para soma de nota e estou tentando fazer a seguinte validação Se o valor do campo for maior que 10 então ele mande um alert.
Consegui fazer para 1 campo como fazer para todos os campos ?
Tentei fazer mas não deu certo. Desde já muito obrigado
//HTML
<div id="notascampos" class="notascampos1" >
<label>Primeira nota:</label>
<input type="text" id="cal_nt1" onBlur="validacao()" class="cal_nota" maxlength="2" min="0" max="10">
<label>Segunda nota:</label>
<input type="text" id="cal_nt2" class="cal_nota" maxlength="2">
</div>
// JS
function validacao(){
var v5 = document.getElementById("cal_nt1").value;
// for(var i = 0; i <4;i++){}
if(v5 > 10){
alert("Número inválido");
console.log(v5);
}
}
Você tem algumas opções.
A que eu mais gosto é isolar o script no header (ou em outro arquivo) e tornar a função apta a tratar qualquer elemento html.
<head>
<script>
function validacao(id) {
var elemento = document.getElementById(id).value;
//Faz as validações aqui
}
</script>
</head>
<body>
Entendeu?
EDIT:
Ia esquecendo. Para chamar a função, em cada elemento, inclua um onblur
<input type="text" onblur="validacao('id_deste_elemento');" id="id_deste_elemento"/>
1 curtida
@darlan_machado nesse caso vou tem que colocar um evento para cada input?
Pq eu consegui fazer a chamada de um evento em um input
A chamada da função deve está em cada input que será validado. Você só muda o id que será passado como parâmetro, para que a validação ocorra no respectivo input em questão.
No exemplo que mandeu eu consigo colocar a função dentro da div?
Consegue. Mas, aí, vai precisar fazer uma função para cada input.
Entendi, pesse que tinha como criar uma function da Div para fazer para todos os inputs
Segue um exemplo mais elaborado:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JS Validation</title>
</head>
<body>
<form>
<label>Primeira nota:</label>
<input type="text" data-limit="10">
<label>Segunda nota:</label>
<input type="text" data-limit="20">
</form>
<script>
var inputs = document.querySelectorAll('INPUT[type=text]');
inputs.forEach(input => {
input.addEventListener('keyup', (event) => {
if(input.value > input.dataset.limit) {
alert("Número inválido");
input.value = null;
}
});
});
</script>
</body>
</html>
Esse exemplo valida o valor de cada campo de acordo com o atributo data-limit de cada input
.
1 curtida
Pessoal eu achei uma solução boa. Quem estiver aprendendo e quiser saber segue o código.
HTML
<div id="notascampos" class="notascampos1" >
<label>Primeira nota:</label>
<input type="text" id="cal_nt1" onBlur="validacao('cal_nt1')" class="cal_nota" maxlength="2" min="0" max="10">
<label>Segunda nota:</label>
<input type="text" id="cal_nt2" onBlur="validacao('cal_nt2')" class="cal_nota" maxlength="2">
</div>
<div id="notascampos2" class="notascampos1">
<label>Terceira nota:</label>
<input type="text" id="cal_nt3" onBlur="validacao('cal_nt3')" class="cal_nota" maxlength="2">
<label id="quartocampo">Quarta nota:</label>
<input type="text" id="cal_nt4" onBlur="validacao('cal_nt4')" class="cal_nota" maxlength="2">
</div>
JS
function validacao(id){
var v5 = document.getElementById(id).value;
if(v5 > 10){
alert("Número inválido");
console.log(v5);
}
}
1 curtida
Não usa ajax não. É uma forma genérica de trabalhar validação. O bom é que vc pode validar qualquer a entrada de dados de forma bem prática.
forna
Abril 18, 2019, 1:25pm
#12
Uma dica legal para escrever menos na hora de fazer seleção de elementos html, veja se entende:
//Let e uma boa pratica para criar variáveis que estejam dentro de funções
let $ = document.querySelector.bind(document);
Com isso você pode fazer suas seleções de maneira mais simples, como é feito no Jquery. Exemplo:
$("cal_nt3");
$("cal_nt4");
1 curtida