2012-09-12 44 views
1

我在寻找一个脚本,它将阻止或删除订单按钮以防止客户进行双重或三重订购,但多次单击该按钮。我不知道这会被称为什么。但该网站是在经典.asp开发的。然而,我会猜测并说这将是一个图像按钮上的JavaScript或jQuery的?任何建议或点这将是一个很大的帮助!阻止订单按钮

谢谢,

+0

如果客户想多次点击该按钮,该怎么办? –

+2

我认为使按钮禁用不是一个正确的解决方案,更好的解决方案(我认为)是显示产品的数量在每次点击显示用户将知道他选择了多少事 –

+0

这个问题不能回答没有显示代码。理想情况下,当数据在服务器上处理时*数据(可用作标志/警戒/检查)将被保留在数据库中,以便多个“提交”将被取消(只有第一个被提交)。这种持久性如何发生取决于当前的数据模型。那么这是怎么把这个显示给用户的问题。 – 2012-09-12 03:22:22

回答

2

看到您对ianpgall的回答发表评论后,我认为最好的解决方案是对客户订单进行服务器端检查。

当他们点击按钮并提交表单时,检查他们是否已将产品添加到他们的购物篮中。如果他们有,你可以选择不再添加它,或要求用户确认。

这允许用户多次点击该按钮,并且还可以防止在用户禁用javascript的情况下错误地添加产品。

+0

这是一个非常糟糕的竞争条件。我确信这个处理速度足够快以至于它可能不成问题,但是您正在检查客户现有订单的事实绝对不能保证。在服务器中导致较长处理的随机打嗝(或其他原因)可能会绕过此检查。 – Ian

+0

什么是比赛条件? –

+0

服务器端的其他问题是,如果我要检查数据库的现有记录它会工作,但我有客户有多个帐户与我们使用相同的地址,电话,联系人名称等...所以如果这是它不会让他们造成问题。所以我可能只需要禁用此按钮即可。 –

1

我想你是指“禁用”按钮。例如:

<input type="button" id="button1" value="Submit" /> 

$("#button1").click(function() { 
    this.disabled = true; 
}); 

如果您正在使用AJAX,可以禁用按钮单击时,则删除该属性的AJAX完成时。

UPDATE:

正如一个提醒,这样只会如果用户已启用Javascript工作。这是一件相当安全的事情,但我只是想让你知道。如果它没有启用,我不知道如何防止多次点击,而不强制用户启用Javascript。如果这是一个严重的问题,那么你可能需要研究一下。

+1

我不认为一个“ASP经典”网站使用AJAX ..可能会让我感到惊讶,但。 – 2012-09-12 03:18:18

+0

感谢您的快速回复。如果使用上面的脚本可以阻止用户多次点击,并且是否有用户这样做?我发现我的客户必须点击订单,但多次,我最终不得不提供信用。我没有使用AJAX :( –

+0

@pst哈哈是非常真实的,但我想把它扔在那里。如果它是一个基本的形式,那么我认为原始的“禁用”代码将工作 – Ian

1

您可以禁用提交按钮,一旦它被点击,这将在大多数情况下防止这种情况。在JavaScript和jQuery中有很多这样的方法。

这是一个简单的使用jQuery的例子。一旦表单被提交,它将禁用表单中的任何SUBMIT按钮,从而防止再次按下提交按钮。

<script type="text/javascript"> 
$("form").submit(function(){ 
    $(this).find('input[type=submit]').attr("disabled", "disabled"); 
}); 
</script> 

如果你也想防止用户单击后退,并再次提交,那么你需要基于ASP会话或饼干不同的解决方案。