使用jQuery防止双重提交表单

时间:2013-09-16 04:48:46

标签: javascript php jquery html forms

问题:

我有一个脚本,用户可以按C或M键选择一个选项。一旦按下任一键,将提交表格。由于有一个严格的规则,每个选项可以提交一次,有些按下多次。

问题:

如何阻止用户在按下C或M键后再次提交表单?我希望他们能够在提交后刷新页面时按任一键。

PHP / jQuery中的代码:

if (in_array($checkstring, $footer))
    {
        echo '
            <script type="text/javascript">
                $(document).ready(function()
                {
                    $(window).keypress(function(e)
                    {
                        if (e.which == 99)
                        {
                            $("input#left").val( 1 );
                            $("form").submit();
                        }
                        else if (e.which == 109)
                        {
                            $("input#right").val( 1 );
                            $("form").submit();
                        }
                    });

                    '.$warning.'
                });
            </script>
        ';
    }

3 个答案:

答案 0 :(得分:2)

我在想你正在寻找类似的东西:

创建一个设置为false的布尔变量,如果变量为false且key = C | M设置为true,则该函数将不会再次运行submit,因为一次为真且不为false

var once = false;
$(window).keypress(function(e){
    if(!once){
        if(e.which == 99){
            $("input#left").val( 1 );
            $("form").submit();
            once = true;
            //maybe a function to time out to reset once after x seconds?
        }else if (e.which == 109){
            $("input#right").val( 1 );
            $("form").submit();
            once = true;
            //maybe a function to time out to reset once after x seconds?
        }
    }
});

答案 1 :(得分:0)

var once = false;
$(window).keypress(function(e){
    if(!once){
        if(e.which == 99 || e.which == 109){
            $("input#"+(e.which == 99)?"left":"right").val( 1 );
            $("form").submit();
            once = true;
        }
    }
});

答案 2 :(得分:-2)

     $(window).keypress(function(e)
    e.stopPropagation();
 /* here we apply this because when we press

 click then it takes form submit action

 so we prevent all the things when we

 press key as you mention in your code*/
                        {
                            if (e.which == 99)
                            {
                                $("input#left").val( 1 );
                                $("form").submit();
                            }
                            else if (e.which == 109)
                            {
                                $("input#right").val( 1 );
                                $("form").submit();
                            }
                        });

reference [event.stopPropagation()][1]


  [1]: http://api.jquery.com/event.stopPropagation/