Делал валидацию для номера телефона. использовал
switch case и метод
match(), для проверки валидации. Но возникла проблема, что он если не подходит под регулярку (то-есть то что я пиши в
input), оно дает ошибку что
0 равняется
null (0 это то что нашла регулярка методом
match()). И 2 проблема, постоянно я не могу найти
input если консолю к примеру переменую
telephon, а если консолю как раз
input оно мне пишет
undefined
<form class="form-contact"></form>
const form = document.querySelector(".form-contact");
const regExTelephon = /(\+)?((\d{2})?\(?0)\d{2}\)?(\d{3})(\d{2})(\d{2})/;
Валидация телефона
function check_value(input) {
const regExObj = {
[input.name]: input.value,
objname : input.name
}
if (input.value.trim()) {
switch (input.name) {
case "telephon":
const tel_spase = input.value.replace(/\s/g,'')
const telephon = tel_spase.match(regExTelephon);
if(telephon[0] !== telephon.input) {
regExObj.error = "Номер не корректен"
return regExObj
}
const tel_group = telephon[0].replace(regExgTelGroup,`38 ($2) $3 $4 $5`)
break;
}
regExObj[input.name] = input.value
return regExObj
} else {
regExObj.error = 'Поле должно быть заполнено'
return regExObj
}
}
собитые submit
form.addEventListener("submit", (e) => {
e.preventDefault();
const input = document.querySelectorAll(".form-item__input");
input.forEach((input) => {
const result = check_value(input);
if(result.error) {
input.classList.add("_error")
document.querySelector(`.form-error_${result.objname}`).innerHTML = result.error;
} else {
input.classList.remove("_error")
document.querySelector(`.form-error_${result.objname}`).innerHTML = "";
}
});
});
функция сохдания input на JS
const arr_form = [
["text", "name", "Your name"],
["text", "telephon", "Mobile"],
["text", "email", "Email"],
]
function inputForm(e) {
let obj_str = "";
for(let e of arr_form) {
obj_str += `
<div class="form-item">
<input type="${e[0]}" class="form-item__input" name="${e[1]}" placeholder="${e[2]}">
<span class="form-error_${e[1]}"></span>
</div>
`;
}
form.innerHTML += obj_str;
}
inputForm()
function formSub() {
const text_and_sub = `
<textarea class="form__textarea" placeholder="Your Message"></textarea>
<button class="form-submit" type="submit">SEND</button>
`;
form.innerHTML += text_and_sub;
}
formSub()