Javascript表单验证返回错误

Javascript表单验证返回错误,javascript,validation,Javascript,Validation,我正在尝试做一个表单,当警报弹出时,它仍在提交。我如何让它停止提交 函数验证(){ var first=document.register.first.value; 如果(第一个==“”){ 警告(“请输入您的姓名”); 第一,焦点(); 返回false; } 返回(真); } 提交 您最好在事物的前端使用required属性。它将“强制”用户在提交之前将文本输入到输入字段中。请注意,我在单词“force”周围加了引号,因为人们可以编辑HTML并绕过HTML required属性。因此,请绝

我正在尝试做一个表单,当警报弹出时,它仍在提交。我如何让它停止提交

函数验证(){
var first=document.register.first.value;
如果(第一个==“”){
警告(“请输入您的姓名”);
第一,焦点();
返回false;
}
返回(真);
}

提交

您最好在事物的前端使用
required
属性。它将“强制”用户在提交之前将文本输入到输入字段中。请注意,我在单词“force”周围加了引号,因为人们可以编辑HTML并绕过HTML required属性。因此,请绝对确保您正在验证PHP端的用户输入

有许多PHP表单验证的教程和示例,例如来自W3Schools和Medium


我认为问题在于按钮的
type=“submit”
。尝试将其更改为
type=“button”
,使用
onclick
函数,如果
validate()
返回
true


编辑:Arjan提出了一个很好的观点,您应该使用
required
。但这回答了表单提交的原因。

您的代码中有几个错误

  • 元素不是自动关闭的
  • 您正在对输入的值而不是引发异常的输入元素调用
    focus


  • 您在return()上添加了括号,然后在调用函数时使用了
    ()
    ,因此它可能会考虑返回未定义的自定义函数,当返回未定义的函数时,它会忽略并继续执行。 如何调用验证,但其响应不会返回到表单

    固定版本:

    <head>
    <script>
    function validate(e) {
       var first = document.register.first.value;
       console.log(document.register.first)
        if( first == "" ) {
            alert( "please enter your name" ) ;
            return false;
        }
    return(true);
    }
    </script>
    </head>
    <body>
        <form name="register" action="testform.php" onsubmit="return validate()">
            <input type="text" name="first" />
            <button type="submit" >sbmit</button>
        </form>
    </body>
    
    
    功能验证(e){
    var first=document.register.first.value;
    console.log(document.register.first)
    如果(第一个==“”){
    警告(“请输入您的姓名”);
    返回false;
    }
    返回(真);
    }
    sbmit
    
    type=“submit”
    指定按钮将提交与其关联的表单。您需要覆盖此默认行为来进行验证,然后告诉它提交。为什么要重新发明轮子?只需使用
    required
    就可以了。无论如何,您必须在服务器端验证用户输入。是的,您提出了一个很好的观点,他应该使用
    required
    。但他确实询问了为什么他的表单在检查他的
    validate()
    函数之前提交onclick。如果他最后遇到的情况是,简单的
    必需的
    验证还不够(例如,如果选择了radio B,则字段a是必需的),那么知道这一点也很好。谢谢你,我对php有一些经验,所以我会试试你的suggestion@Kra9如果您遵循我提供的教程之一,您将完全可以。它们解释了必要的内容,还包括HTML。
    
    <head>
    <script>
    function validate(e) {
       var first = document.register.first.value;
       console.log(document.register.first)
        if( first == "" ) {
            alert( "please enter your name" ) ;
            return false;
        }
    return(true);
    }
    </script>
    </head>
    <body>
        <form name="register" action="testform.php" onsubmit="return validate()">
            <input type="text" name="first" />
            <button type="submit" >sbmit</button>
        </form>
    </body>