javascript
  • jquery
  • html
  • button
  • 2014-12-02 149 views 0 likes 
    0

    我目前正在查看防止使用按钮标签多次提交的所有可能性。我面临的问题是,如果用户点击提交按钮非常快,它将使他们能够提交多个帖子。我想限制提交只是一个提交。我试图使用onclick="this.disabled = true,但它使按钮不工作。目前的按钮标签看起来像这样:使用按钮防止多次提交

    return "<button class='button btn btn-primary' id='gform_submit_button' onclick='this.disabled = true' type='submit'><span>Submit!/span></button>"; 
    

    任何人都可以指导我如何实现这一目标?

    回答

    2

    最终,您无法阻止客户端上的多个提交。您必须在服务器端实施这些安全措施,无论您使用哪种服务器端语言(例如PHP)。

    +1

    不正确。您可以使用JavaScript阻止多个子映射。 – 2014-12-02 02:30:23

    +0

    不以确定的用户无法覆盖的方式。 – Greg 2014-12-02 02:31:12

    0

    客户端,你可以点击一次canSubmit已被设置为false后做这样的事情

    var canSubmit = true; 
    
    $('.button').click(function(){ 
    
        if(canSubmit) 
        { 
         // fire missiles 
         canSubmit = false; 
        } 
        else 
        { 
         // sorry missiles loading 
        } 
    
    }); 
    

    既然现在,第二次点击将不会运行的代码。验证或处理您提交的数据后,您可以将canSubmit设置回true

    0

    按钮打开时onClicked调用这个函数:

    function submitFunc(formId){. document.getElementById(formId).submit(); 
    } 
    
    0

    提交页面总是会非常棘手。有两个挑战,提交

    1. 正如你正确地提到,用户可以提交同一页面多次
    2. 提交页面之后,如果用户刷新页面,则也页将被重新提交

    有处理这个挑战的一个技巧是用GET调用重定向页面。您用来加载数据的GET调用。详细了解它here

    所以我建议一旦表单被提交,重定向页面GET。

    在这个过程中,新的表单将被加载,如果用户尝试提交表单验证将被触发,将处理第一个挑战。

    由于重定向,因为最后一次调用GET时刷新数据将被加载并且没有任何伤害。

    相关问题