PageSourceSearch

https://www.correios.com.br/++theme++tema-do-portal-correios/static/js/cod/validaMedidasPrecosEPrazos.js

js correios.com.br collected 2026-09-24 07:27:58 UTC 6,278 bytes, 150 lines download raw bytes

1define(function (){
2    return {
3        getTrataMedidas: function () {
4            if (document.querySelector('[data-altura]')){
5                habilitaComportamentoDeRetiradaDeFoco();
6                habilitaComportamentoDeDigitacao();
7            }
8        }
9    }
10
11    function recuperaLimitesMedidas(){
12        const variacaoMedidas = {
13            inputAlturaMin : 1,
14            inputAlturaMax : 100,
15            inputLarguraMin : 8,
16            inputLarguraMax : 100,
17            inputComprimentoMin : 13,
18            inputComprimentoMax : 100
19        }
20        return variacaoMedidas
21    }
22
23    function recuperaInputs(){
24        const ListaDeInput = {
25            inputAltura : document.querySelector('[data-altura]'),
26            inputLargura : document.querySelector('[data-largura]'),
27            inputComprimento : document.querySelector('[data-comprimento]')
28        }
29        return ListaDeInput
30    }
31
32    function habilitaComportamentoDeRetiradaDeFoco() {
33        const ObjListaDeInputs = recuperaInputs();
34        const ObjListaDeMedidas = recuperaLimitesMedidas();
35        
36        for (const chaveElemento of Reflect.ownKeys(ObjListaDeInputs)) { 
37            ObjListaDeInputs[chaveElemento].addEventListener("blur", () => {
38                if (ObjListaDeInputs[chaveElemento].value == ""){
39                    return true
40                }
41                if (validaMedidaMaxima(ObjListaDeInputs)){
42                    return false
43                }
44                validaLimitesValor(ObjListaDeInputs, ObjListaDeMedidas);
45            });
46        }
47    }
48    function validaMedidaMaxima(ObjListaDeInputs){
49        let soma = 0;
50        for (const chaveElemento of Reflect.ownKeys(ObjListaDeInputs)) {
51            if (ObjListaDeInputs[chaveElemento].value != ""){
52                soma += parseInt(ObjListaDeInputs[chaveElemento].value);
53            }
54        }
55        for (const chaveElemento of Reflect.ownKeys(ObjListaDeInputs)) {
56            if (soma > 200){
57                apresentaMensagemDeResposta('A soma das dimensões não pode exceder 200 cm');
58                adicionaClasse(ObjListaDeInputs[chaveElemento],"item-obrigatorio");
59                return true
60            } else {
61                removeClasse(ObjListaDeInputs[chaveElemento],"item-obrigatorio");
62                removeMensagemDeResposta('A soma das dimensões não pode exceder 200 cm')
63                return false
64            }
65        }
66    }
67
68    function validaLimitesValor(ObjListaDeInputs, ObjListaDeMedidas){
69        for (const chaveElemento of Reflect.ownKeys(ObjListaDeInputs)) {
70            let min = chaveElemento + 'Min';
71            let max = chaveElemento + 'Max';
72            if (ObjListaDeInputs[chaveElemento].value == ""){
73                continue;
74            }
75            if (parseInt(ObjListaDeInputs[chaveElemento].value) >= ObjListaDeMedidas[min]
76                && parseInt(ObjListaDeInputs[chaveElemento].value) <= ObjListaDeMedidas[max] ){
77                    removeClasse(ObjListaDeInputs[chaveElemento], "item-obrigatorio");
78                    removeMensagemDeResposta("Valor do campo "+ ObjListaDeInputs[chaveElemento].name + " está fora dos limites estabelecidos");
79            } else {
80                apresentaMensagemDeResposta("Valor do campo "+ ObjListaDeInputs[chaveElemento].name + " está fora dos limites estabelecidos");
81                adicionaClasse(ObjListaDeInputs[chaveElemento], "item-obrigatorio");
82            }
83        }
84    }
85
86    function habilitaComportamentoDeDigitacao(){
87        const ObjListaDeInputs = recuperaInputs();
88        for (const chaveElemento of Reflect.ownKeys(ObjListaDeInputs)) { 
89            ObjListaDeInputs[chaveElemento].addEventListener("keyup", () => {
90                removeMensagemDeResposta("Informe os dados corretamente para realizar a simulação");
91                removeMensagemDeResposta("Valor do campo "+ ObjListaDeInputs[chaveElemento].name + " está fora dos limites estabelecidos");
92                removeMensagemDeResposta('A soma das dimensões não pode exceder 200 cm')
93                removeClasse(ObjListaDeInputs[chaveElemento], "item-obrigatorio");
94            })
95        }
96    }
97
98    function adicionaClasse(campo, classe){
99        campo.classList.add(classe);
100    }
101
102    function removeClasse(campo, classe){
103        campo.classList.remove(classe);
104    }
105
106    // // O campo label-simulacao="label-simula" irá receber todas as mensagens de erro,
107    // // vou personalizar as mensagens em relação aos campos que foram preenchidas de maneira
108    // // errada.
109    // function apresentaMensagemDeResposta(mensagem){
110    //     const labelSimulacao = document.querySelector('[label-simulacao]');
111    //     if (labelSimulacao.textContent.search(mensagem) < 0){
112    //         labelSimulacao.textContent =  labelSimulacao.textContent + mensagem;
113    //     }
114    // }
115
116    // function removeMensagemDeResposta(mensagem){
117    //     const labelSimulacao = document.querySelector('[label-simulacao]');
118    //     labelSimulacao.textContent = labelSimulacao.textContent.replace(mensagem, '');;
119    // }
120
121    function apresentaMensagemDeResposta(mensagem){
122        const ListaMensagensErro = document.querySelector('.lista-mensagem-erro');
123        const listaParagrafoErro = document.querySelectorAll('[data-paragrafo-erro]')
124        if (listaParagrafoErro.length){
125            for (let i=0; i < listaParagrafoErro.length; i++){
126                if (listaParagrafoErro[i].textContent == mensagem){
127                    return false
128                }
129            }
130        } 
131        const quebraLinha = document.createElement('p');
132        quebraLinha.dataset.paragrafoErro = 'mensagemparagrafoErro';
133        quebraLinha.classList.add('paragrafo-mensagem-erro');
134        quebraLinha.innerHTML = mensagem;
135        ListaMensagensErro.appendChild(quebraLinha);
136    }
137
138    function removeMensagemDeResposta(mensagem){
139        const listaParagrafoErro = document.querySelectorAll('[data-paragrafo-erro]')
140          if (listaParagrafoErro.length){
141            for (let i=0; i < listaParagrafoErro.length; i++){
142                if (listaParagrafoErro[i].textContent == mensagem){
143                    listaParagrafoErro[i].outerHTML = ''
144                }
145            }
146        } 
147    }
148
149
150});

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.