Vamos conversar?

De indústria para indústria: conhecemos seus desafios!

Na Systherm acreditamos que cada conversa é o início de uma parceria. Seja para tirar dúvidas, solicitar um orçamento ou entender melhor como nossas máquinas podem transformar o seu negócio, nossa equipe está pronta para ouvir você.

" * * Opção B — Plugin de snippets (WPCode, Code Snippets etc.) * Tipo "HTML/JavaScript", posição "Footer" */ (function () { "use strict"; /* ─── Utilitários ─────────────────────────────────────── */ function mascararCNPJ(valor) { // Remove tudo que não for dígito var d = valor.replace(/\D/g, "").substring(0, 14); if (d.length <= 2) return d; if (d.length <= 5) return d.slice(0,2) + "." + d.slice(2); if (d.length <= 8) return d.slice(0,2) + "." + d.slice(2,5) + "." + d.slice(5); if (d.length <= 12) return d.slice(0,2) + "." + d.slice(2,5) + "." + d.slice(5,8) + "/" + d.slice(8); return ( d.slice(0,2) + "." + d.slice(2,5) + "." + d.slice(5,8) + "/" + d.slice(8,12) + "-" + d.slice(12,14) ); } function calcDigito(cnpj, tamanho) { var soma = 0; var pos = tamanho - 7; for (var i = tamanho; i >= 1; i--) { soma += parseInt(cnpj.charAt(tamanho - i), 10) * pos--; if (pos < 2) pos = 9; } var resto = soma % 11; return resto < 2 ? 0 : 11 - resto; } function validarCNPJ(valor) { var cnpj = valor.replace(/\D/g, ""); if (cnpj.length !== 14) return false; // Rejeita sequências iguais (00000000000000, 11111111111111 …) if (/^(\d)\1{13}$/.test(cnpj)) return false; var dig1 = calcDigito(cnpj, 12); if (dig1 !== parseInt(cnpj.charAt(12), 10)) return false; var dig2 = calcDigito(cnpj, 13); if (dig2 !== parseInt(cnpj.charAt(13), 10)) return false; return true; } /* ─── Mensagem de erro inline ─────────────────────────── */ function getMensagemErro(campo) { var id = "cnpj-erro-msg"; var msg = document.getElementById(id); if (!msg) { msg = document.createElement("span"); msg.id = id; msg.setAttribute("role", "alert"); msg.style.cssText = [ "display:block", "margin-top:4px", "font-size:12px", "color:#c0392b", "font-weight:500", ].join(";"); campo.parentNode.appendChild(msg); } return msg; } function mostrarErro(campo, texto) { campo.style.borderColor = "#c0392b"; campo.setAttribute("aria-invalid", "true"); getMensagemErro(campo).textContent = texto; } function limparErro(campo) { campo.style.borderColor = ""; campo.removeAttribute("aria-invalid"); getMensagemErro(campo).textContent = ""; } /* ─── Inicialização ───────────────────────────────────── */ function init() { var campo = document.getElementById("form-field-field_067342b"); if (!campo) return; // campo não encontrado nesta página campo.setAttribute("maxlength", "18"); campo.setAttribute("inputmode", "numeric"); campo.placeholder = "00.000.000/0001-00"; /* Máscara em tempo real */ campo.addEventListener("input", function () { var cursor = campo.selectionStart; var valorAntes = campo.value; campo.value = mascararCNPJ(campo.value); // Reposiciona o cursor de forma aproximada após reformatação var diff = campo.value.length - valorAntes.length; try { campo.setSelectionRange(cursor + diff, cursor + diff); } catch (e) {} limparErro(campo); }); /* Valida ao sair do campo */ campo.addEventListener("blur", function () { var digitos = campo.value.replace(/\D/g, ""); if (digitos.length === 0) return; // não reclama se vazio (o required cuida disso) if (!validarCNPJ(campo.value)) { mostrarErro(campo, "CNPJ inválido. Verifique os números e tente novamente."); } else { limparErro(campo); } }); /* Bloqueia submit se CNPJ inválido */ var form = campo.closest("form"); if (form) { form.addEventListener("submit", function (e) { if (!validarCNPJ(campo.value)) { e.preventDefault(); e.stopImmediatePropagation(); mostrarErro(campo, "CNPJ inválido. Corrija antes de enviar."); campo.focus(); } }, true); // captura na fase de captura para rodar antes do Elementor } } /* Aguarda o DOM — compatível com carregamento assíncrono do Elementor */ if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", init); } else { init(); } })();