good evening. I wanna create a mask for my JavaScript project, using only Pure JavaScript, without any jQuery stuff or anything like that. What a want to do is, while I’m writing a bunch of numbers, they will be placed in certain spots. Like, for the final format, I want to do “XXX.XXX.XXX-XX”, but, while writing, “XXX.” and then “XXX.XXX.”, like that. Right now, my code is:
const naosei = document.getElementById('ehistoai'); naosei.addEventListener(onfocus, validarCPF) function validarCPF(){ var cpf = naosei.value; if (cpf.length === 3){ cpf1 = cpf + '.'; document.forms[0].cpf.value = cpf1; return true; } if (cpf1.length === 6){ cpf2 = cpf1 + '.'; document.forms[0].cpf1.value = cpf2; return true; } if (cpf2.length === 9){ cpf3 = cpf2 + '-'; document.forms[0].cpf2.value = cpf3; return true; } }
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Placa</title> </head> <body> <form> <p> <label>Insira a placa do carro: <input type="text" name="placa" id='ehistoai' onkeyup="validarPlaca()" placeholder="ABC-1234" maxlength="14" autofocus> </label> </p> </form> <script src="main3.js"></script> </body> </html>
So, how can I make sure that, while I am writing the numbers, the dots will appear after the 3rd, 6th, and the hyphen after the 9th number? Thanks for the help!
Advertisement
Answer
w matches any single letter, number or underscore (same as [a-zA-Z0-9_]). You can customize and add only
numbers
andalphabets
using/[a-zA-Z0-9]/g
inmatch
function.
Intentionally I’ve used the condition e.key !== "Backspace" && e.key !== "Delete"
to not add the characters in input if user use delete
or Backspace
key.
const naosei = document.getElementById("ehistoai"); naosei.addEventListener(onfocus, validarCPF); function validarCPF(e) { if (e.key !== "Backspace" && e.key !== "Delete") { var cpf = naosei.value.match(/w/g) ?? ""; if (cpf.length >= 3) cpf.splice(3, 0, "."); if (cpf.length >= 7) cpf.splice(7, 0, "."); if (cpf.length >= 11) cpf.splice(11, 0, "-"); naosei.value = cpf.join(""); } } naosei.addEventListener("keyup", validarCPF);
<form> <p> <label>Insira a placa do carro: <input type="text" name="placa" id='ehistoai' placeholder="ABC-1234" maxlength="14" autofocus> </label> </p> </form>