Ir para conteúdo

POWERED BY:

Arquivado

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

rockrgo

seletor [name="value"] não pega valor

Recommended Posts

Boa tarde pessoal,

 

estou tentando fazer um calculo entre três selects sempre que um deles é alterado, porém meu select hora inicial só me retorna um valor quando o change é nele mesmo e utilizo o this para pegar o valor, nas outras duas ações ele me retorna 0.

 

Alguém sabe me dizer porque isto ocorre, pois não está fazendo muito sentido porque os outros campos me retornam o valor normalmente.

 

            //Calcula as horas trabalhadas
            $('select[name="hora_inicio"]').on('change', function(){                
                var hi = parseFloat($(this).val());
                var hf = parseFloat($('select[name="hora_fim"]').val());
                var ha = parseFloat($('select[name="hora_almoco"]').val());
                alert(hf + '-' + hi + '-' + ha);
                var ht = hf - hi - ha;
                $('input[name="horas_trabalhadas"]').val(ht);
            });
            $('select[name="hora_fim"]').on('change', function(){                
                var hi = parseFloat($('select[name="hora_inicio"]').val());
                var hf = parseFloat($(this).val());
                var ha = parseFloat($('select[name="hora_almoco"]').val());
                alert(hf + '-' + hi + '-' + ha);
                var ht = hf - hi - ha;
                $('input[name="horas_trabalhadas"]').val(ht);
            });
            $('select[name="hora_almoco"]').on('change', function(){                
                var hi = parseFloat($('select[name="hora_inicio"]').val());
                var hf = parseFloat($('select[name="hora_fim"]').val());
                var ha = parseFloat($(this).val());
                alert(hf + '-' + hi + '-' + ha);
                var ht = hf - hi - ha;
                $('input[name="horas_trabalhadas"]').val(ht);
            });

Valeu!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa! boa tarde.

 

Primeiro vamos simplificar um pouco, troca tudo isso ai, por:

//Calcula as horas trabalhadas
$('select[name="hora_inicio"], select[name="hora_fim"], select[name="hora_almoco"]').on('change', function(){
    var hi = parseFloat($('select[name="hora_inicio"]').val());
    var hf = parseFloat($('select[name="hora_fim"]').val());
    var ha = parseFloat($('select[name="hora_almoco"]').val());
    alert(hf + '-' + hi + '-' + ha);
    var ht = hf - hi - ha;
    $('input[name="horas_trabalhadas"]').val(ht);
});

ai me diga oque volta no alert(), qndo vc dá o change em cada um dos selects.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara enxugou bem o código, estou precisando estudar um pouco mais de seletores.

 

Mas não funcionou o hora_inicial agora retorna sempre 0. Antes no código gigante quando usava o this

$('select[name="hora_inicio"]').on('change', function(){                
                var hi = parseFloat($(this).val());

ele me retornava o valor correto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não cara, não tá fazendo sentido.

 

Isola o trecho de html + js e posta aqui um mínimo com o problema para eu poder testar, ou então coloque um link para a página.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara achei onde estava errando...este meu sistema estou trabalhando em uma unica página e na lateral dele existem alguns forms dentro de um menu acordeon, nele contém um campo com o nome hora_inicio também. Como meu formulário que estou fazendo o calculo aparece através de um load da página. Nem lembrei deste outro form.

 

coloquei um id para meu form e estou pegando os valores desta forma.

var hi = parseFloat($('#formVisitas select[name="hora_inicio"]').val());

Comecei com javascript a pouco tempo e ainda estou meio perdido com relação a load de paginas e como elas interferem no DOM.

 

Aí quando vc falou em isolar o html veio na mente o outro form.

 

Valeu pela força!

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.