Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

sampaioops

input radio e seus valores aplicando no JS

Recommended Posts

Bom galera estou fazendo um formulario, com perguntas, e com respostas ja definidas, com sim ou nao. E assim usando input type=radio.. para o usuario escolher apenas uma opção ficando assim:

<form id="project">
        <fieldset>
            <legend>Veja como está sua auto-estima Hoje!</legend>
<h4>De 1 a 10 defina sua Auto-estima hoje:</h4>

            <label for="bem">Acordou bem?</label>
            <input type="radio" name="bem" value="sim">Sim<br>
            <input type="radio" name="bem" value="nao">Não<br>
            
<label for="esperanca">Está com Esperança hoje?</label>
            <input type="radio" name="esperanca" value="sim">Sim<br>
            <input type="radio" name="esperanca" value="nao">Não<br>
            
<label for="beleza">Está se sentindo bonito(a) hoje?</label>
            <input type="radio" name="beleza" value="sim">Sim<br>
            <input type="radio" name="beleza" value="nao">Não<br>
            
<label for="fisico">Você está satisfeito com o seu Corpo?</label>
            <input type="radio" name="fisico" value="sim">Sim<br>
            <input type="radio" name="fisico" value="nao">Não<br>
            
<label for="felicidade">Se sente feliz?</label>
            <input type="radio" name="felicidade" value="sim">Sim<br>
            <input type="radio" name="felicidade" value="nao">Não<br>
             
            <label for="estima">Total:</label>
            <input type="text" name="estima" disabled="disabled"/>


<a href="#" onClick="confirmarEstima();">Confirmar</a>
Estando assim, agora vamos ao que eu quero que seja feito, quando clicar confirmar, eu quero que ele pegue os Sim dado, e os Nao dado pelo usario.. e assim contando... por exemplo, sao 5 perguntas, entao se das 5 perguntas 3 delas foram com Sim, entao será igual 3, e 3 vai resultar um total por exemplo if (estima = 3 ) {"AI aqui vai apresentar um texto como sua estima está otima"}.. E o nao tem o valor de 0, logo o sim tem o valor de 1... eu ja cheguei fazer algo parecido, porem de uma forma nao tao agradavel para o usario, a cada pergunta ele tinha que dar um valor de 1 a 10.. inves de respostas com sim e nao.... voltando.. eu cheguei até aqui, so que nao sei se ta certo, e meio que nao sei como continuar

function confirmarEstima() {
document.getElementById("project");

var estima = ['bem','esperanca','beleza','fisico','felicidade'];
var resposta = [];
var resultado = 0;

for (i=0; i<estima.lenght; i++) {
var sim = document.getElementsByName("sim");
var nao = document.getElementsByName("nao");
if (estima = sim) {
resposta[i] = true;
resultado++;
} else (estima = nao)
resposta[i] = false;
}
entao basicamente, é isso quero que ele conte os sim dados pelos os usarios, e dependendo de quantos sim apresentar uma mensagem... o que eu ja fiz parecido era assim:

function confirmarEstima() {
document.getElementById("project");

var bem = +project.bem.value;
var esperanca = +project.esperanca.value;
var beleza = +project.beleza.value;
var fisico = +project.fisico.value;
var felicidade = +project.felicidade.value;

var estima = bem + esperanca + beleza + fisico + felicidade;

 project.estima.value = estima.toFixed(0);

if (estima <= 20) {
project.classificacao.value = ("Pessimo"); 
} else if (estima > 20 && estima <= 25) {
project.classificacao.value = ("Ruim"); 
} else if (estima > 25 && estima <= 30) {
project.classificacao.value = ("Bem");
    } else if (estima > 30 && estima <= 35) {
project.classificacao.value = ("Otima");
    } else if (estima > 34 && estima <= 40) {
project.classificacao.value = ("Perfeita");
    } else if (estima > 40 && estima <= 50) {
project.classificacao.value = ("Maravilhosa");
    } else {
   project.classificacao.value = ("MELHOR DE TODAS!");
    }

}

Compartilhar este post


Link para o post
Compartilhar em outros sites
Sua função tem palavra escrita errada ("length"), a comparação no if tem que ser dois iguais ("==") e a função também tem erros de lógica. Você precisa verificar se o campo com valor "sim" foi selecionado ("checked") e então fazer a soma. Depois verifica qual foi o resultado para criar e colocar o texto no campo de resultado.



function confirmarEstima() {
document.getElementById("project");

var estima = ['bem','esperanca','beleza','fisico','felicidade'];
var resultado = 0;

for(var x = 0; x < estima.length; x++){
var campos = document.getElementsByName(estima[x]);

for(var y = 0; y < campos.length; y++){
var campo = campos[y];
if(campo.value == "sim" && campo.checked){
resultado++;
}
}
}

var texto = "?";
if(resultado == 5){
texto = "blablabla";
}else if(resultado > 3){
texto = "blablabla2";
}
document.getElementsByName("estima")[0].value = texto;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites
Sua função tem palavra escrita errada ("length"), a comparação no if tem que ser dois iguais ("==") e a função também tem erros de lógica. Você precisa verificar se o campo com valor "sim" foi selecionado ("checked") e então fazer a soma. Depois verifica qual foi o resultado para criar e colocar o texto no campo de resultado.
function confirmarEstima() {
    document.getElementById("project");
    
    var estima = ['bem','esperanca','beleza','fisico','felicidade'];
    var resultado = 0;
    
    for(var x = 0; x < estima.length; x++){
        var campos = document.getElementsByName(estima[x]);
        
        for(var y = 0; y < campos.length; y++){
            var campo = campos[y];
            if(campo.value == "sim" && campo.checked){
                resultado++;
            }
        }
    }
    
    var texto = "?";
    if(resultado == 5){
        texto = "blablabla";
    }else if(resultado > 3){
        texto = "blablabla2";
    }
    document.getElementsByName("estima")[0].value = texto;
}

Te agradeço muito, até que enfim alguem me respondeu, entre outros foruns, comecei a aprender a pouco tempo, isso que eu to fazendo é pra eu praticar, e aprender tambem, e graças a voce, me ajudou nessa pratica, consegui aprender mais ainda.. queria saber se tem como eu entrar em contato com voce, se nao for muito incomodo, pra tirar umas duvidas de vez em quando.. desde ja, agradeço!

Compartilhar este post


Link para o post
Compartilhar em outros sites
Beleza!

O "segredo" é estudar e praticar.

Mas você pode postar aqui no fórum mesmo, ele é bem movimentado, tem bastante amigos para ajudar e também tem coisas que eu não sei mas eles sabem aí eles poderão te ajudar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.