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