thai-id-validator
Version:
Thai Citizen ID validator with 0 dependencies
2 lines (1 loc) • 2.01 kB
JavaScript
(function(){const n=document.createElement("link").relList;if(n&&n.supports&&n.supports("modulepreload"))return;for(const e of document.querySelectorAll('link[rel="modulepreload"]'))s(e);new MutationObserver(e=>{for(const i of e)if(i.type==="childList")for(const a of i.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&s(a)}).observe(document,{childList:!0,subtree:!0});function r(e){const i={};return e.integrity&&(i.integrity=e.integrity),e.referrerPolicy&&(i.referrerPolicy=e.referrerPolicy),e.crossOrigin==="use-credentials"?i.credentials="include":e.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function s(e){if(e.ep)return;e.ep=!0;const i=r(e);fetch(e.href,i)}})();var b=Object.defineProperty,h=(t,n)=>{for(var r in n)b(t,r,{get:n[r],enumerable:!0,configurable:!0,set:s=>n[r]=()=>s})},l={};h(l,{default:()=>f});function u(t){if(typeof t=="number"&&(t=t.toString()),!/^\d{13}$/.test(t))return!1;let n=0;for(let r=0;r<12;r++)n+=Number(t[r])*(13-r);return(11-n%11)%10===Number(t[12])}typeof B<"u"&&typeof B.exports<"u"?(B.exports=u,l.default=u,l.isValidThaiID=u):typeof window<"u"&&(window.isValidThaiID=u);var f=u;document.addEventListener("DOMContentLoaded",()=>{const t=document.getElementById("citizenid"),n=document.getElementById("button"),r=document.getElementById("errorMessage"),s=document.getElementById("successMessage"),e=IMask(t,{mask:"0-0000-00000-00-0"});t.addEventListener("input",i),t.addEventListener("keypress",a),n.addEventListener("click",m);function i(){const o=e.unmaskedValue,p=13,g=/^[0-9]\d*$/,c=o.length===p,y=g.test(o),d=f(o);n.disabled=!(c&&y&&d),t.setAttribute("aria-invalid",String(!d)),r.setAttribute("aria-hidden",String(d)),s.setAttribute("aria-hidden",String(!d)),r.style.display=c?d?"none":"block":"none",s.style.display=c&&d?"block":"none"}function a(o){if(o.code==="Enter")return o.preventDefault(),!1}function m(o){o.preventDefault(),o.stopImmediatePropagation(),window.alert("Your citizen ID submit value is: "+e.unmaskedValue)}});