【问题标题】:How do I prevent multiple form submissions with the enter key?如何防止使用回车键提交多个表单?
【发布时间】:2013-05-17 13:16:35
【问题描述】:

我使用 PHP 和 javascript 构建了一个问答游戏。由于每个问题都有时间限制,我没有提供提交按钮;相反,用户可以通过按 Enter 键直接提交答案。按下回车键后,用户被重定向到另一个 URL,该 URL 检查发布的答案是否正确,如果答案正确则加 10 分,然后用用户的分数更新数据库,然后将用户重定向到琐事页面,其中他们还有另一个问题要回答。但是,当用户输入正确答案并多次按下回车键而不让页面重新加载时,脚本会认为他们的答案是有效的,并且在提交答案时随时添加他们的分数。所以,如果我在输入正确答案后按回车键 40 次,它会增加 400 分。我已经尝试通过使用来防止这种情况:

$("form").submit(function() {
    $(this).submit(function() {
        return false;
    });
    return true;
});

但这似乎不起作用。数据提交一次后如何禁用提交操作,直到页面重新加载?

欢迎使用 Javascript、Jquery 或 PHP 的任何解决方案。

【问题讨论】:

  • 这样做可能看起来有点愚蠢,但是您是否尝试过在他们按回车后您可以使用 JQuery 隐藏表单直到重新加载?
  • 我可以使用类似的东西来做到这一点:$('form').submit(function() { $('answerboxid').hide(); });
  • 我相信如此,伙计,试一试,让我知道你的进展如何:)

标签: php javascript jquery html forms


【解决方案1】:
var isSubmitted = false;
$("form").submit(function() {
   if(!isSubmitted){
     isSubmitted = true;
   }else{
     return false;
   }
});

【讨论】:

  • 这不正确,每次刷新页面时isSubmitted都会被重置为false。
  • OP问所以,如果我在输入正确答案后按回车键40次,它会增加400分..以防止这种情况发生。你可以使用上面的代码。如果你想在页面刷新后阻止它。你需要在服务器端处理这个。
  • 这个我试过了,还是不行。不允许第一次提交。
【解决方案2】:

您必须添加的解决方案之一是将提交信息存储在数据库中,例如对于每个用户在添加值 +10 之前,您应该检查您是否已经添加了该值。我建议的原因,因为任何其他客户端选项都可能在一种或其他情况下失败。

【讨论】:

  • 我同意这个答案。在客户端使用 javascript 可以防止用户意外多次提交,但在游戏/测验的情况下,您应该考虑有人故意作弊。那些了解 javascript 的人可能会忽略您的客户端预防措施。
【解决方案3】:


试试这个代码

$('#form1').submit(function(e) {
    $('#send').attr("disabled", "disabled"); // Where #send is the id of ur submit button//
});

【讨论】:

    【解决方案4】:

    包括 Jquery BlockUI 插件。 http://www.malsup.com/jquery/block/ 并在您的页面中包含以下代码。

    $("input").keypress(function(event) {
      if (event.which == 13) {
        event.preventDefault();
        $("form").submit();
        $.blockUI;
      }
    });
    

    当用户点击回车时,插件将阻止用户界面,并且用户将无法再次点击回车,直到页面重新加载。

    【讨论】:

    • 我没有使用块 UI 插件,而是在按下回车键后使用按键来模糊焦点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-06
    • 2020-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多