1) Это onsubmit
не onSubmit
.
2) Событие onsubmit
применяется только к тегу формы (ref: https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement/submit_event)
Итак, вы должны переименовать onSubmit = "return changeColor()"
в onsubmit = "return changeColor()"
, а затем переместить его в тег формы.
Более того, вы не можете просто вызвать form.classList.add("End");
, это вызовет ошибку undefined
. Что здесь form
? Это просто не существует в этом контексте. Есть как минимум два способа сделать это.
Первый: передать объект формы в параметрах
<form onsubmit="return someFunction(event, this)">
Enter name: <input type="text">
<input type="submit">
</form>
<script>
function someFunction(event, form) {
form.classList.add('abc');
return false; //whatever boolean you want, just an example
}
</script>
Здесь вы передаете первый аргумент, который является объектом события. Второй параметр - это, в этой ситуации, это объектное представление вашей формы. В вашей функции JS вы управляете обоими. Я назвал свой второй аргумент просто form
. Теперь я могу выполнять действия с моим аргументом form
, который ссылается на мою форму.
Второе проще для новичка. Просто дайте идентификатор форме и получите его по идентификатору.
<form id="my-form" onsubmit="return someFunction()">
Enter name: <input type="text">
<input type="submit">
</form>
<script>
function someFunction() {
let form = document.getElementById('my-form');
form.classList.add('my-class');
return false; //whatever boolean you want, just an example
}
</script>
Эти два примера показывают, как должен выглядеть ваш файл. Конечно, вы должны адаптировать его к своим потребностям.
Я не уверен, что это решит все ваши проблемы. Но я уверен, что это будет, по крайней мере, часть из них.