Ir para conteúdo

Arquivado

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

RafaCordL

Função só funciona no chrome

Recommended Posts

Gente, será que alguém pode me ajudar, isso é meio urgente.

Fiz uma função para calcular idade, até com a ajuda do pessoal aqui, fazendo perguntas quando eu precisava.

Dai ela funciona perfeitamente no Chrome, mas no firefox e ie não, poderiam me dar um help?

 

JS:

function calculaIdade(){
$("#dt_nascimento, #dt_diagnostico_sintoma").change(function(){
        var data_diag = $("#dt_diagnostico_sintoma").val();
        var dt_nasc = $("#dt_nascimento").val();
        $("#idade").val("");
        if((data_diag != '')&&(dt_nasc != '')){
            var vt_nasc = dt_nasc.split("/");
            var data_nascimento = vt_nasc[2]+"-"+Number(vt_nasc[1])+"-"+Number(vt_nasc[0]);

            var vt_diag = data_diag.split("/");
            var data_diagnostico = vt_diag[2]+"-"+Number(vt_diag[1])+"-"+Number(vt_diag[0]);
            
            var now = new Date(data_diagnostico);
            var today = new Date(data_diagnostico);
            
            var yearNow = now.getYear();
            var monthNow = now.getMonth();
            var dateNow = now.getDate();

            var dob = new Date(data_nascimento);

            var yearDob = dob.getYear();
            var monthDob = dob.getMonth();
            var dateDob = dob.getDate();
            var age = {};
            var ageString = "";
            var yearString = "";
            var monthString = "";
            var dayString = "";

            yearAge = yearNow - yearDob;

            if (monthNow >= monthDob)
                var monthAge = monthNow - monthDob;
            else {
                yearAge--;
                var monthAge = 12 + monthNow -monthDob;
            }

            if (dateNow >= dateDob)
                var dateAge = dateNow - dateDob;
            else {
                monthAge--;
                var dateAge = 31 + dateNow - dateDob;

                if (monthAge < 0) {
                    monthAge = 11;
                    yearAge--;
                }
            }

            age = {
                years: yearAge,
                months: monthAge,
                days: dateAge
            };

            if ( age.years > 1 ) yearString = " years";
            else yearString = " year";
            if ( age.months> 1 ) monthString = " months";
            else monthString = " month";
            if ( age.days > 1 ) dayString = " days";
            else dayString = " day";

            if(age.years > 0){
                $("#idade").val(age.years);
                document.getElementById('idade_anos').checked = true;
                $('#idade_mes').attr("checked", false);
                $('#idade_dia').attr("checked", false);
                $('#idade_hora').attr("checked", false);
            }else if(age.months > 0 ){
                $("#idade").val(age.months);
                $('#idade_anos').attr("checked", false);
                document.getElementById('idade_mes').checked = true;
                $('#idade_dia').attr("checked", false);
                $('#idade_hora').attr("checked", false);
            }else if(age.days){
                $("#idade").val(age.days);
                $('#idade_anos').attr("checked", false);
                $('#idade_mes').attr("checked", false);
                document.getElementById('idade_dia').checked = true;
                $('#idade_hora').attr("checked", false);
            }else if(age.days == 0){
                $("#idade").val('1');
                $('#idade_anos').attr("checked", false);
                $('#idade_mes').attr("checked", false);
                $('#idade_dia').attr("checked", false);
                document.getElementById('idade_hora').checked = true;
            }
        }
    });
}

HTML:

<div class="espacamento" name="#7">
    <legend>7 - Data do Diagnóstico</legend>
    <input type="text" id="dt_diagnostico_sintoma" name="dt_diagnostico_sintoma" placeholder="__/__/____" required>
</div>
<div class="espacamento" name="#9">
    <legend>9 - Data de Nascimento</legend>
    <input type="text" id="dt_nascimento" name="dt_nascimento" placeholder="__/__/____" required>
</div>
<div id="campo_idade">
    <div class="espacamento" name="#10">
        <legend>10 - (ou) Idade</legend>
        <input type="text" id="idade" name="nu_idade" disabled required>
    </div>
    <label><input type="radio" name="tipo_idade" value="1" id="idade_hora"/>1- Hora(s)</label>
    <label><input type="radio" name="tipo_idade" value="2" id="idade_dia"/>2- Dia(s)</label>
    <label><input type="radio" name="tipo_idade" value="3" id="idade_mes"/>3- Mês(es)</label>
    <label><input type="radio" name="tipo_idade" value="4" id="idade_anos"/>4- Ano(s)</label>
</div>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aparece alguma coisa no console de erros ?

 

Ctrl + Shift + J no Firefox.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hum ? tem como postar o link para analisarmos ?

 

Os erros mostrados estão relacionados a diversas outras coisas, e não a este código que vc postou.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Funcionou aqui no Firefox, sem erros.

 

Será que não é algum plugin que vc tem instalado ai ? até pq no teu console aparece algo que não deveria, que é o Firefox tentando executar uma Chrome Extension.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Gavaldão, tem que preencher o Campo 7 e 9 com uma data, exemplo 7: 14/04/2015 e 9? 05/04/1993, tem que aparecer 22 anos, ele preenche sozinho. Isso só funciona no chrome, tentei em vários pcs diferentes.

Firefox

11160563_679083752238356_392402388099700

Chrome

11156212_679084452238286_181618822657632

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, aqui funcionou corretamente no Firefox após eu preencher os dois campos de idade.

Pode ser cache dos pcs onde vc testou ? não vi nada "errado" no código.

 

E no console ? tente extrair informações mais úteis, como:

-> O que tem no console assim que vc abre a página ? F5

-> E o que tem depois que vc digita ?

-> E depois de um certo tempo que vc sai do campo ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

omni.ja! é algum plugin que você tem instalado ai ?

Desinstale ele do teu Firefox. Estou no FF 37 num MAC. Aqui está tudo funcionando.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu não instalei nada no firefox, eu nem uso firefox, eu instalei ele depois que um colega aqui disse que não estava funcionando. Texta no safari, testei num mac nele e não estava funcionando.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa noite.

Conforme o Willian falou Seu código está certo pois funciona em todo lugar.

O que aparenta é um conflito de plugin ou algum bloqueio.

Partindo da resposta que você disse não é só no seu PC que não está funcionando, tem alguma máquina aí ligada na sua rede em que funcione a função.

Verifica na sua máquina em Painel de Controle / Programas e Recursos / se tem instalado ai "WARSAL 1.5.1!

é UM PLUGIN DE SEGURANÇA QUE SE INSTALA AUTOMATICAMENTE QUANDO SE ACESSA A CAIXA ECONOMICA, BANCO DO BRASIL OU ITAU, é instalado pela GAS TECNOLOGIA.

Ultimamente eu tenho tido problemas com algumas aplicações e rede em alguns clientes, por causa desse plugin.

Se existir, pode desinstalar para ver, depois ele se instala de novo ao acessar a CAIXA.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que disse no post anterior e agora é mais para informação e esclarecimento, para acharmos a solução.

 

Você já testou usando a biblioteca jquery no servidor ao invés de buscar em http

O servidor pode estar bloqueando alguma coisa.

 

Você tem no código fonte plugin jquery-mobile.

 

Tentei acesso pelo celular com Windows 8 - as datas não preenchem o cursor fica fora do campo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, RafaCordL,

 

Um comentário sobre o código: use o método getFullYear() no lugar de getYear(), é melhor. Você poe ter problemas com o segundo.

Quanto ao seu problema, você está usando o Number() para converter parte da sua data (aliás, não entendi porque converter parte dela, nesse caso). O Number() vai remover os zeros desnecessários e isso pode gerar uma data inválida na hora de usar o new Date().

Exemplo: 05/04/1993 = 1983-4-5

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.