繁体   English   中英

如何防止使用Enter键提交多个表单?

[英]How do I prevent multiple form submissions with the enter key?

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

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

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

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

var isSubmitted = false;
$("form").submit(function() {
   if(!isSubmitted){
     isSubmitted = true;
   }else{
     return false;
   }
});

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


试试这个代码

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

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

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

当用户按下Enter键时,插件将阻止UI,并且用户将无法再次按下Enter键,直到页面重新加载。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM