0

问题:

我有一个脚本,用户可以在其中按 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>
        ';
    }
4

3 回答 3

2

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

它创建了一个设置为 false 的布尔变量,如果变量为 false 并且 key = C|M 设置一次为 true,则该函数将不会再次运行提交,因为一次为 true 而不是 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?
        }
    }
});
于 2013-09-16T04:56:12.993 回答
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;
        }
    }
});
于 2013-09-16T05:12:28.153 回答
-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/
于 2013-09-16T04:51:04.310 回答