【JavaScript】在前台验证表单,必须使用onsubmit="return xx()"的形式

如下的两个不同的表单form1与form2,一个通过button按钮的Onclick事件去验证表单是否符合要求后才能提交,另一个通过form表单的οnsubmit="return xx()"的形式去验证。

这里先顺带插一句,没有οnsubmit="xx()"的形式,其中xx()是JavaScript中的验证函数,不加οnsubmit="xx()"打死都验证不了。

如下的代码:

<!DOCTYPE html>  
<html>  
    <head>  
        <title>form表单的实验</title>  
    </head>  
    <body>  
        <h1>不使用OnSubmit与type='submit'的表单</h1>
        <form action="2.html" method="post" id="form1">
            <input type="text" id="form1_text" />            
        </form>
        <button οnclick="form1_check()">提交</button>
        <h2>使用OnSubmit与type='submit'的表单</h1>
        <form action="2.html" method="post" οnsubmit="return form2_check()">
            <input type="text" id="form2_text" />
            <input type="submit" value="提交" />
        </form>
    </body>  
</html>
<script>
    function form1_check(){
        var form1_text=document.getElementById("form1_text").value;
        if(form1_text!="1"){
            alert("请输入1");
            return false;
        }
        else{
            document.getElementById("form1").submit();
        }
    }
    function form2_check(){
        var form2_text=document.getElementById("form2_text").value;
        if(form2_text!="1"){
            alert("请输入1");
            return false;
        }
        else{
            return true;
        }            
    }
</script>
运行效果如下图,上述两个表单在视觉上没有任何区别,但是在本质上是不同的。


看似皆能完成对文本框输入的是否为1的验证,才跳转到2.html,然而使用button按钮的Onclick事件去验证表单是否符合要求后才能提交,问题就出现了,如上图,尽管form1中没有提交按钮input type="submit",却可以直接在文本框上任何东西都不输入,直接按回车进行验证。此时的回车就是扮演了input type="submit"按钮的作用,无论html代码中是否有这个按钮。由于form1的表单验证处于button按钮的Onclick事件,而直接没有onsubmit函数,所以,在form1中,按回车,无论输入的是否为1,皆能够跳转到2.html。

反观下方的form2,无论是按回车好、鼠标按回车按钮好,都要经过验证的οnsubmit="return xx()"函数,产生前台验证表单的效果。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值