Есть у меня сайт 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()" и тогда все нормально работает, такая же история со скриптом на менюшку мобильную, пришлось старый кривой оставить. Подскажите, где туплю, в чем проблема?