Contato - Systherm - Ice Cream Machine
Ir para o conteúdo
"
*
* 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();
}
})();