VAT Number Validation Form
let excelLink;
const vatInput = document.getElementById(‘vat’);
const vatError = document.getElementById(‘vatError’);
const submitBtn = document.getElementById(‘submitBtn’);
vatInput.addEventListener(‘input’, () => {
const vatValue = vatInput.value.trim();
if (isValidVAT(vatValue)) {
vatError.textContent = ”;
submitBtn.disabled = false;
submitBtn.style.cursor = ‘pointer’;
submitBtn.style.opacity = ‘1’;
} else {
vatError.textContent = ‘Invalid VAT number. Please enter a valid VAT number.’;
submitBtn.disabled = true;
submitBtn.style.cursor = ‘not-allowed’;
submitBtn.style.opacity = ‘0.6’;
}
});
document.addEventListener(“DOMContentLoaded”, (event) => {
excelLink = document.querySelectorAll(‘.is-acf-field’);
excelLink[0].style.visibility = ‘hidden’;
submitBtn.addEventListener(‘click’, async (event) => {
event.preventDefault()
if (excelLink[0].style.visibility === ‘hidden’) {
excelLink[0].style.visibility = ‘visible’;
submitBtn.disabled = true;
submitBtn.style.cursor = ‘not-allowed’;
submitBtn.style.opacity = ‘0.6’;
} else {
excelLink[0].style.visibility = ‘hidden’;
}
const vat = document.getElementById(‘vat’).value;
const data = { vat };
const response = await fetch(‘https://script.google.com/macros/s/AKfycbzyaL4klbFY9h1Bv963nL0qFhdcrmKWTJeWBaoM4bryNid4csGeQXTb1AB2paBgPmjY0g/exec’, {
method: ‘POST’,
headers: {‘Content-Type’: “text/plain;charset=utf-8”},
body: JSON.stringify(data),
});
})
});
function isValidVAT(vatNumber) {
const vatRegexes = [
/^ATU[0-9]{8}$/, // Austria
/^BE0[0-9]{9}$/, // Belgium
/^BG[0-9]{9,10}$/, // Bulgaria
/^CY[0-9]{8}[A-Z]$/, // Cyprus
/^CZ[0-9]{8,10}$/, // Czech Republic
/^DE[0-9]{9}$/, // Germany
/^DK[0-9]{8}$/, // Denmark
/^EE[0-9]{9}$/, // Estonia
/^EL[0-9]{9}$/, // Greece
/^ES[A-Z0-9]{1}[0-9]{7}[A-Z0-9]{1}$/, // Spain
/^FI[0-9]{8}$/, // Finland
/^FR[A-Z0-9]{2}[0-9]{9}$/, // France
/^HR[0-9]{11}$/, // Croatia
/^HU[0-9]{8}$/, // Hungary
/^IE[0-9]{7}[A-Z]{1,2}$/, // Ireland
/^IT[0-9]{11}$/, // Italy
/^LT[0-9]{9,12}$/, // Lithuania
/^LU[0-9]{8}$/, // Luxembourg
/^LV[0-9]{11}$/, // Latvia
/^MT[0-9]{8}$/, // Malta
/^NL[0-9]{9}B[0-9]{2}$/, // Netherlands
/^PL[0-9]{10}$/, // Poland
/^PT[0-9]{9}$/, // Portugal
/^RO[0-9]{2,10}$/, // Romania
/^SE[0-9]{12}$/, // Sweden
/^SI[0-9]{8}$/, // Slovenia
/^SK[0-9]{10}$/ // Slovakia
];
return vatRegexes.some(regex => regex.test(vatNumber));
}