Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
表单onsubmit只有在Javascript中才能工作_Javascript_Html_Forms_Onsubmit - Fatal编程技术网

表单onsubmit只有在Javascript中才能工作

表单onsubmit只有在Javascript中才能工作,javascript,html,forms,onsubmit,Javascript,Html,Forms,Onsubmit,我最近开始做表单验证,我试图理解一些东西。我还没有在SE的其他地方找到这个 当元素中有onsubmit=returnvalidateForm或onsubmit=validateForm时,表单不做任何事情。但是,当我从表单标记中删除onsbuit,而在JS文件中执行document.forms[favorite].onsubmit=function validateForm时,它可以正常工作 我让它工作了,但我试图理解为什么html中onsubmit的正常方法不起作用 以下是我的代码,供参考:

我最近开始做表单验证,我试图理解一些东西。我还没有在SE的其他地方找到这个

当元素中有onsubmit=returnvalidateForm或onsubmit=validateForm时,表单不做任何事情。但是,当我从表单标记中删除onsbuit,而在JS文件中执行document.forms[favorite].onsubmit=function validateForm时,它可以正常工作

我让它工作了,但我试图理解为什么html中onsubmit的正常方法不起作用

以下是我的代码,供参考:

HTML:


首先我们定义一个函数,然后我们调用这个函数。在使用window.load定义之前调用该函数。需要在使用window.load之前定义验证函数。对不起,我的英语很差

<script>
    window.onload = function () {
        function validateForm() {
            var input = document.forms["favorite"]["car"].value;
            if (input == "") {
                alert("You missed an entry");
                return false;
            }
        }
    }

</script>

当然,使用onsubmit是必须避免的,因为它混合了表示HTML和逻辑JavaScript。也就是说,如果添加returntrue,onsubmit=returnvalidateForm应该可以工作;到validateForm的结尾,以便它始终返回一个值。这个问题也非常类似于。@MikeMcCaughan好的,我试过了,它很有效,谢谢。
window.onload = function(){
  document.forms["favorite"].onsubmit = function validateForm(){
    var input = document.forms["favorite"]["car"].value;
    if(input == ""){
      alert("You missed an entry");
      return false;
    }
  }
}
<script>
    window.onload = function () {
        function validateForm() {
            var input = document.forms["favorite"]["car"].value;
            if (input == "") {
                alert("You missed an entry");
                return false;
            }
        }
    }

</script>
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">

        <title>Form</title>
        <script>
            function validateForm() {
                    var input = document.forms["favorite"]["car"].value;
                    if (input == "") {
                        alert("You missed an entry");
                        return false;
                    }
                }
        </script>
    </head>
    <body>
        <form name="favorite" action="#" onsubmit="return validateForm();" method="post">
            Favorite Car Brand: <input type="text" name="car">
            <input type="submit" value="Submit">
        </form>


    </body>
</html>