При вынесении js скрипта в отдельный файл он перестаёт работать
Выношу скрипт в отдельный js файл, в конце html документа (перед закрывающимся тегом body) цепляю его, после чего он перестаёт работать. В чём может быть причина? Теги script из js файла удаляю.
<script src="{% static 'js/one_picture.js' %}"></script>
Вот полный скрипт:
<script>
//Кнопка консультация специалиста
buttonCons = document.getElementById('id10');
buttonCons.addEventListener('click', function() {
this.style.display = "none";
document.querySelector(".alert10").innerHTML = 'Свяжитесь с нами по тел, whatsapp, telegramm +79954015457, [email protected]';
})
const my_form = document.getElementById("add-form");
function validation(form){
function create_error(input, text){
const parent = input.parentNode;
parent.classList.add('error');
const createLabel = document.createElement('label');
createLabel.textContent=text;
createLabel.classList.add('create-error');
parent.append(createLabel);
};
function remove_error(input){
const parent = input.parentNode;
if (parent.classList.contains('error'))
{
parent.querySelector('.create-error').remove();
parent.classList.remove('error');
}
};
let result="true";
form.querySelectorAll('input').forEach(element=>{
remove_error(element);
if (element.dataset.required=="true")
{
if (element.value=="")
{
console.log("Ошибка ввода");
create_error(element, "Поле не заполнено");
result="false";
}
}
if (element.dataset.lengthMax)
{
if (element.value.length>element.dataset.lengthMax)
{
console.log("Ошибка длины ввода");
create_error(element, "Превышено количество введённых символов");
result="false";
}
}
if (element.dataset.checktext=="true")
{
var re = /^[A-ZА-ЯЁ]+$/i;
var myName =element.value;
var valid = re.test(myName);
console.log(valid);
if (valid!=true && myName!="")
{
console.log("Введите буквы");
create_error(element, "Вы можете вводить только буквы");
result="false";
}
}
if (element.dataset.checkemail=="true")
{
var re = /^[\w-\.]+@[\w-]+\.[a-z]{2,5}$/i;
var myMail =element.value;
var valid = re.test(myMail);
console.log(valid);
if (myMail=="")
{
console.log("Ошибка почта");
create_error(element, "Поле не заполнено");
result="false";
}
else if (valid!=true)
{
console.log("Ошибка почта");
create_error(element, "Введите корректный e-mail");
result="false";
}
}
if (element.dataset.checkphone=="true")
{
var re = /^[\d\+][\d\(\)\ -]{4,14}\d$/;
var myPhone = element.value;
var validphone = re.test(myPhone);
if (myPhone=="")
{
console.log("Ошибка телефон");
create_error(element, "Поле не заполнено");
result="false";
}
else if (validphone!=true)
{
console.log("Ошибка телефон");
create_error(element, "Введите корректный номер телефона");
result="false";
}
}
});
return result;
}
//Очистка формы и подсказок ошибок
buttonClose = document.getElementById('close');
buttonClose.addEventListener('click', function() {
my_form.querySelectorAll('.clear').forEach(element=>{
element.value="";
const parent = element.parentNode;
if (parent.classList.contains('error'))
{
parent.querySelector('.create-error').remove();
parent.classList.remove('error');
}
});
})
//Вернуть поля формы
buttonClose2 = document.getElementById('close2');
buttonClose2.addEventListener('click', function() {
document.getElementById("add-form").style.display = "block";
if (document.getElementById("h6"))
{
document.getElementById("h6").style.display="none"
}
document.getElementById('id3').style.display = "block";
})
my_form.addEventListener("submit", function (e) {
e.preventDefault();
document.getElementById("add-form").style.display = "block";
if (validation(this)=="true")
{
let out='<div class="py-2" id="id8"><button type="button" class="rounded-4 button3 mx-auto px-auto py-4 my-0" >Подтвердить отправку данных >>></button></div>'
console.log("Проверка валидации");
document.querySelector(".alert7").innerHTML = out;
document.getElementById("id3").style.display = "none";
button = document.getElementById('id8');
button.addEventListener('click', function() {
this.style.display = "none";
document.querySelector(".alert7").innerHTML = '<h6 id="h6" class="mx-auto">Спасибо за заказ. Информация о заказе отправлена вам на e-mail. Мы свяжемся с вами в ближайшее время.</h6>';
const my_form = document.getElementById("add-form");
document.getElementById("add-form").style.display = "none";
let name = document.getElementById('name').value;
let surname = document.getElementById('surname').value;
let phone = document.getElementById('phone').value;
let email = document.getElementById('email').value;
let title_pic = document.getElementById('title').value;
let author = document.getElementById('author').value;
let price = document.getElementById('price').value;
let way_pay = document.getElementById('way_pay').value;
var csrftoken = $("[name=csrfmiddlewaretoken]").val();
json_res=JSON.stringify({'name': name, 'surname': surname, 'phone': phone, 'email': email, 'title_pic':title_pic, 'price':price, 'way_pay': way_pay, 'author': author}),
//console.log(json_res);
$.ajax({
type:"POST",
url: "{% url 'detail5' atrPerson_one.slug_ap main_picture_one.slug_mp %}",
headers:{
"X-CSRFToken": csrftoken
},
cache: true,
data: json_res,
dataType : "json",
success: function(response){
console.log(response);
console.log("Отправлено");
},
error: function(response){
$("#alert").text('Не работает');
},
})
});
}
})
</script>