美文网首页
表单防止重复提交

表单防止重复提交

作者: 泪滴在琴上 | 来源:发表于2022-04-01 11:11 被阅读0次
    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <title>防止ajax重复提交</title>
        </head>
        <body>
            <button id="btn">提交</button>
            <script>
    
                /**
                 * 模拟ajax提交
                 * @fn 回调函数
                 * */
                function Ajax(fn){
                    setTimeout(function(){
                        var data= {result:true,msg:'提交成功!'};
                        fn(data);
                    },2000);
                }
                /**
                 * btn click 提交事件
                 * 
                 * */
                btn.onclick=function(){
                    //检查 按钮是否被锁住,锁住直接rerun
                    if(btn.getAttribute('lock')){
                        return;
                    }
                    //上锁
                    btn.setAttribute('lock',1);
                    //更改状态
                    btn.innerText='提交中...';
                    //模拟ajax提交
                    Ajax(function(data){
                        //请求成功
                        if(data.result){
                            console.log('请求成功');
                            //请求成功解锁
                            btn.setAttribute('lock',"");
                            //还原状态
                            btn.innerText='提交';
                        }else{
                            console.log('请求失败');
                            //请求失败解锁
                            btn.setAttribute('lock',"");
                            //还原状态
                            btn.innerText='提交';
                        }
                    });
                }
            </script>
        </body>
    </html>
    

    逻辑思路:
    1.提交数据之前判断当前提交按钮是否存在lock锁
    2.在ajax提交之前给提交按钮上锁
    3.ajax成功之后或者失败之后解锁

    相关文章

      网友评论

          本文标题:表单防止重复提交

          本文链接:https://www.haomeiwen.com/subject/ezlnjrtx.html