artur_kudaev
@artur_kudaev
Frontend Developer

Проблема с JavaScript, почему не работает код?

Есть у меня сайт londonjack.ru, на нем случилась для меня не понятная ситуация, где-то элементарную вещь пропустил и не знаю в чем дело. Проблема в том, что код не работает такой:

window.onload = function formValidator() {
	var form = document.getElementsByTagName('form');
	for (var i = 0; i < form.length; i++) {
		form[i].addEventListener('submit', validator);
	}

	var rules = {
		required: function(el) {
			if(el.value != '') {
				return true;
			}
			return false;
		},
		email: function(el) {
			var reg = /^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$/;
			return reg.test(el.value);
		},
		name: function(el) {
			var reg = /^[a-zA-Zа-яА-Я ]{3,}[0-9]*$/gi;
			return reg.test(el.value);
		},
		message: function(el) {
			var reg = /^[a-zA-Zа-яА-Я .,=!+@#$:;'"?№%ёЁ]{1,}$/gi;
			return reg.test(el.value);
		}

	};
	
	var writeErr = document.getElementById('err-input');
	
	function showErrors(arr) {
		console.log(arr);
		writeErr.innerHTML = 'Ошибка заполнения формы';


	}

	function validator(e) {
		var errors = [];
		var items = this.elements;
		var btn = document.getElementById('btn-inpt')
		for (var i = 0; i < items.length; i++) {
			if(items[i] != btn) {
				var rulesList = items[i].dataset.rule;
				rulesList = rulesList.split(' ');
				for (var j = 0; j < rulesList.length; j++) {
					if(rulesList[j] in rules) {
						if(!rules[rulesList[j]](items[i])) {
							if(items[i] != rulesList) {
								items[i].style.border = '1px solid red';
								items[i].style.borderRadius = '5px';
							}
							errors.push({
								name: items[i].name,
								error: rulesList[j]
							});
						}
						if(rules[rulesList[j]](items[i])) {
							items[i].style.border = '';
						}
					}
				}
			}
		}
		if(errors.length > 0) {
			e.preventDefault();
			showErrors(errors);
		}
		else {
			writeErr.innerHTML = '';
		}
	}
}


Создавал отдельную страничку, когда делал валидацию, все нормально было, работало при клике на кнопку.
у меня на сайте он отказывается работать, приходится убирать window.onload и вешать обработчик на кнопку в html onclick="formValidator()" и тогда все нормально работает, такая же история со скриптом на менюшку мобильную, пришлось старый кривой оставить. Подскажите, где туплю, в чем проблема?
  • Вопрос задан
  • 155 просмотров
Пригласить эксперта
Ответы на вопрос 2
artur_kudaev
@artur_kudaev Автор вопроса
Frontend Developer
https://codepen.io/anon/pen/QgQXbX
Вот код, все работает
Ответ написан
Комментировать
Negwereth
@Negwereth
lvivcss.com.ua
Так это. А у вас это единственный файл скрипта? После него ничего не подключено на странице? window.onload всё-таки обычное свойство, перезаписывается.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы