-
Notifications
You must be signed in to change notification settings - Fork 0
/
ruphone_validation.min.js
10 lines (9 loc) · 2.47 KB
/
ruphone_validation.min.js
1
2
3
4
5
6
7
8
9
10
/*
Copyright (C) 2020 - 2023 Ilya A.Zhulin. All Rights Reserved.
*/
'use strict';function _telValidate(k){k.addEventListener("input",function(q){let h="1234567890+*!".split(""),v="force"===k.getAttribute("data-rutel")?1:0,l=q.target.selectionStart,g=0,r=0,n=k.value,a=[],c=0,t,d="__ (___) ___-__-__".split(""),f="__ (____) __-__-__".split(""),w="_ (___) ___-__-__".split(""),x="_ (____) __-__-__".split(""),b=[],e="495 499 812 496 343 861 863 351 383 846 342 843 347 831 391 473 423 862".split(" "),u=["3","4","8","9"];g=l;n="deleteContentBackward"===q.inputType?n.slice(0,
l)+"*"+n.slice(l):n.slice(0,l)+"!"+n.slice(l);a=n.split("");a.forEach((m,p)=>{if(-1===h.indexOf(m)||0<p&&"+"==m)console.log(p),a[p]="",g=l>=p?l-1:l});"8"==a[0]?0===v?b=a[3]&&("9"==a[3]||-1<e.indexOf(a[3]+a[4]+a[5]))?w:x:(a.shift(),a.unshift("+","7"),b=d):"+"==a[0]?("7"==a[1]?b=d:(a.shift(),a.unshift("+","7")),b=""==a[2]?""==a[3]?"9"==a[4]||-1<e.indexOf(a[4]+a[5]+a[6])?d:f:"9"==a[3]||-1<e.indexOf(a[3]+a[4]+a[5])?d:f:""==a[2]?"9"==a[3]||-1<e.indexOf(a[3]+a[4]+a[5])?d:f:"9"==a[2]||-1<e.indexOf(a[2]+
a[3]+a[4])?d:f):7==a[0]?(a.unshift("+"),b=""==a[2]?"("==a[3]?"9"==a[4]||-1<e.indexOf(a[4]+a[5]+a[6])?d:f:"9"==a[3]||-1<e.indexOf(a[3]+a[4]+a[5])?d:f:"("==a[2]?"9"==a[3]||-1<e.indexOf(a[3]+a[4]+a[5])?d:f:"9"==a[2]||-1<e.indexOf(a[3]+a[4]+a[5])?d:f):"*"!=a[0]&&(a.unshift("+","7"),b=""==a[2]?"("==a[3]?"9"==a[4]||-1<e.indexOf(a[4]+a[5]+a[6])?d:f:"9"==a[3]||-1<e.indexOf(a[3]+a[4]+a[5])?d:f:"("==a[2]?"9"==a[3]||-1<e.indexOf(a[3]+a[4]+a[5])?d:f:"9"==a[2]||-1<e.indexOf(a[2]+a[3]+a[4])?d:f);t=b.length;a.forEach((m,
p)=>{if(c<t&&""!=m){for(;"_"!=b[c];)if(c++,0<r||g===c)g++,r++;if("*"==m){if("-"==b[c]||" "==b[c]||")"==b[c]||"("==b[c])for(;"-"==b[c]||" "==b[c]||")"==b[c]||"("==b[c];)g=c-1;else b[c]="_",0<r&&(g=c-1);c++}else"!"==m?g=c:(b[c]=m,c++);r=0}});"8"==b[0]&&-1===u.indexOf(b[3])?(g=3,b[3]="_"):"+"==b[0]&&-1===u.indexOf(b[3])&&(g=4,b[4]="_");k.value=b.join("");k.setSelectionRange(g,g)})}
document.addEventListener("DOMContentLoaded",()=>{document.querySelectorAll("input[type='tel'], input[data-type='tel']").forEach(k=>{_telValidate(k)});(new MutationObserver(k=>{for(let q of k)for(let h of q.addedNodes)h instanceof HTMLElement&&((h.matches("[type='tel']")||h.matches("[data-type='tel']"))&&_telValidate(h),h.querySelector("[data-type='tel']")&&_telValidate(h.querySelector("[data-type='tel']")),h.querySelector("[type='tel']")&&_telValidate(h.querySelector("[type='tel']")))})).observe(document.documentElement,
{childList:!0,subtree:!0})});