Как реализовать валидацию поля input URL?
Мне нужно что когда пользователь вводит ссылку в поле при нажатие на кнопку поле проверялось на валидность и если проверка прошла успешно то переходило по этой ссылки, в противном случае если в ссылки отсутствует http//:
то оно добавлялось в ссылку.
В input
может поступать ссылка с http//:
или без. Но при нажатие кнопки происходит переход по ссылки именно с http//:
const input = document.getElementById('input');
const btn = document.getElementById('btn');
const form = document.getElementById('form');
const urlPattern = new RegExp(/^https?:\/\/([a-z0-9-]([a-z0-9-]|(?<!\.)\.)+?(?<!\.)\.[a-z]{2,10}(:\d{1,5})?$)|(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}(:\d{1,5})?$)/);
form.addEventListener('submit', function (event) {
if (!urlPattern.test(input.value)) {
input.value.unshift('https://');
} else {
btn.addEventListener('click', function (event) {
window.location.href = input.value;
})
}
})
<form id="form">
<label for="input"></label>
<input id="input" type="text" placeholder="Введите ссылку">
<button id="btn" type="button">Жмякни на меня !</button>
</form>
Источник: Stack Overflow на русском