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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM