阻止form表单提交的问题

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

  可是,有中状况咱们用return false 不能阻止表单提交post

    <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(),却能够达到阻止表单提交的效果:spa

    <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:code

    <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>

 

 

  参考资料 orm

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

相关文章
相关标签/搜索