Javascript onsubmit не работает

Я пытаюсь сделать работу javascript для отправки формы, функция, похоже, не запускается. Может ли кто-нибудь помочь?

<html>
<head>
    <script>
        function upload(){
                alert("I am an alert box!");
        }
     </script>
</head>
<body>
    <form enctype="multipart/form-data" method="post" onsubmit="return upload();">
    <input type="file" name="file">
    <input type="submit" name="upload" value="Datei hochladen">
    </form>
</body>
</html>

Ответ 1

При прикреплении обработчика события к элементу формы область действия обработчика события является формой, а не окном

<form enctype="multipart/form-data" method="post" onsubmit="return upload(this);">

<script>
    function upload(scope) {
        console.log(scope); // The passed scope from the event handler is
    }                       // the form, and not window
</script>

Поскольку входные элементы внутри формы присоединяются как свойства к объекту формы, где имя является ключом, вызывая upload() в обработчике событий, где область видимости является формой, будет равна вызову form.upload(), но form уже имеет элемент с таким именем, поэтому form.upload - это кнопка загрузки, а не функция upload() в глобальной области.

Чтобы решить эту проблему, переименуйте функцию или элемент

<html>
<head>
    <script>
        function upload(){
                alert("I am an alert box!");
        }
     </script>
</head>
<body>
    <form enctype="multipart/form-data" method="post" onsubmit="return upload();">
    <input type="file" name="file">
    <input type="submit" name="upload2" value="Datei hochladen">
    </form>
</body>
</html>

FIDDLE

Ответ 2

Добавить выражение о возврате в свой код

<script>
function upload(){
    alert("I am an alert box!");
    return false;
}
</script>