zoukankan      html  css  js  c++  java
  • 阻止form表单提交的问题

      阻止form表单提交这种场景可能在生活中,我们经常碰到,而在我们第一印象里面可能我们用return false 去阻止表单默认行为。

      但是,有中情况我们用return false 不能阻止表单提交

        <div class="warp">
            <h2>登录到pfan空间</h2>
            <p>这里有更多的知识分享,交流。</p>
            <form action="/register" method = "post" >
                <input type="text" name = "username" placeholder = "请输入注册用户名">  <br />
                <input type="password" name = "pwd" placeholder = "请输入初始密码">   <br />
                <input type="password" name = "aginpwd" placeholder = "请再次输入密码">   <br />
                <input type="submit" value ="注册" class="login_btn">
            </form>
        </div>
    <script>
        var form = document.forms[0],
            submit = document.querySelector(".login_btn"),
            inputBtn = document.getElementsByTagName("input");
            console.log(form);
        form.addEventListener("submit",function(){
            if(inputBtn[0].value == ""){
                alert("请您认真填写注册用户名!");
                    return false;
            }else if(inputBtn[1].value == ""){
                alert("请您认真输入初始密码!");
                    return false;
            }else if(inputBtn[2].value == ""){
                alert("请您再次输入密码");
                    return false;
            }else if(inputBtn[1].value != inputBtn[2].value){
                alert("两次密码输入不匹配,请更正!");
                    return false;
            }    
        },false);
    
    </script>

      以上代码我们看着,好像没有错误,但是,表单依然可以提交,测试环境chrome。

      但是我们将return false 改成用 e.preventDefault(),却可以达到阻止表单提交的效果:

        <div class="warp">
            <h2>登录到pfan空间</h2>
            <p>这里有更多的知识分享,交流。</p>
            <form action="/register" method = "post" >
                <input type="text" name = "username" placeholder = "请输入注册用户名">  <br />
                <input type="password" name = "pwd" placeholder = "请输入初始密码">   <br />
                <input type="password" name = "aginpwd" placeholder = "请再次输入密码">   <br />
                <input type="submit" value ="注册" class="login_btn">
            </form>
        </div>
    <script>
        var form = document.forms[0],
            submit = document.querySelector(".login_btn"),
            inputBtn = document.getElementsByTagName("input");
            console.log(form);
        form.addEventListener("submit",function(e){
            if(inputBtn[0].value == ""){
                alert("请您认真填写注册用户名!");
                e.preventDefault();
            }else if(inputBtn[1].value == ""){
                alert("请您认真输入初始密码!");
                e.preventDefault();
            }else if(inputBtn[2].value == ""){
                alert("请您再次输入密码");
                e.preventDefault();
            }else if(inputBtn[1].value != inputBtn[2].value){
                alert("两次密码输入不匹配,请更正!");
                e.preventDefault();
            }    
        },false);
    
    </script>

      另一种就是将其改成用onsubmit:

        <div class="warp">
            <h2>登录到pfan空间</h2>
            <p>这里有更多的知识分享,交流。</p>
            <form action="/register" method = "post" >
                <input type="text" name = "username" placeholder = "请输入注册用户名">  <br />
                <input type="password" name = "pwd" placeholder = "请输入初始密码">   <br />
                <input type="password" name = "aginpwd" placeholder = "请再次输入密码">   <br />
                <input type="submit" value ="注册" class="login_btn">
            </form>
        </div>
    <script>
        var form = document.forms[0],
            submit = document.querySelector(".login_btn"),
            inputBtn = document.getElementsByTagName("input");
            console.log(form);
        form.onsubmit = function(){
            if(inputBtn[0].value == ""){
                alert("请您认真填写注册用户名!");
                return false;
            }else if(inputBtn[1].value == ""){
                alert("请您认真输入初始密码!");
                return false;
            }else if(inputBtn[2].value == ""){
                alert("请您再次输入密码");
                return false;
            }else if(inputBtn[1].value != inputBtn[2].value){
                alert("两次密码输入不匹配,请更正!");
                return false;
            }    
            
        }
    </script>

      参考资料 

      http://stackoverflow.com/questions/4924036/return-false-on-addeventlistener-submit-still-submits-the-form

  • 相关阅读:
    flink(七) 电商用户行为分析(七)订单支付实时监控之订单超时、订单交易匹配
    flink(六) 电商用户行为分析(六)恶意登录监控之连续登陆超时
    flink(五) 电商用户行为分析(五)市场营销商业指标统计分析之市场推广统计、广告点击量统计、 黑名单过滤
    flink(四) 电商用户行为分析(四)实时流量统计(二)网站独立访客数(UV)
    flink(三) 电商用户行为分析(三)实时流量统计(一)热门页面浏览量、网站总浏览量
    flink(二) 电商用户行为分析(二)实时热门商品统计(计算最热门 Top N 商品)
    flink(一) 电商用户行为分析(一)项目整体介绍
    Cause: No supported Ethernet device found + Unknown symbol in module
    vfio_enable_intx
    dpdk disable 收发 interrupt + l3fwd-power
  • 原文地址:https://www.cnblogs.com/pingfan1990/p/4655233.html
Copyright © 2011-2022 走看看