2011-05-06 66 views
2

我想禁用窗体上的提交按钮,所以当用户点击两次它不会再次提交它。我知道这里有几个问题可以解决这个问题,但提供的解决方案似乎并不奏效。为什么我的表单在第一次点击后禁用提交时没有提交?

我使用这里提供的解决方案:Disable submit button on form submit

这里是我的jQuery:

$('form#proof_form').submit(function(){ 
    $(this).children('input[type=submit]').attr('disabled', 'disabled'); 
}); 

提交按钮被按下后,它应该进入一个保存的值到一个数据库,然后重定向到另一个页。相反,它现在重新加载当前页面而不重定向。我在用户按下提交按钮之后立即放置了一个测试回显,它不起作用。此值也不再发布到数据库,所以我知道它在发送到数据库并重定向之前禁用了提交按钮。

这里是我的PHP:

if(isset($_POST['accept_proof'])){ 
    echo 'The form was submitted!'; 
    $sql = 'INSERT into orders SET 
      name = "' . $_SESSION['name'] . '"'; 
    $conn->query($sql) or die($conn->error); 
} 

为什么没有按钮第一次点击后提交?

+0

表单提交没有JS事件按钮提交? – Elorfin 2011-05-06 07:53:15

+0

如果您将禁用线路取出并让所有其他物品单独运行,是否真的有效? – DarthJDG 2011-05-06 07:56:22

回答

0

如果同一页面令人耳目一新,我想你忘了把你的formaction属性。 你应该有这个:

<form action="your_action" ...> 
    ... 
</form> 

哎呀,这有助于。干杯

+0

他正在重定向到另一页。 – 2011-05-06 08:01:59

1

你忘了“返回假”;

试试这个:

$('form#proof_form').submit(function(){ 
    $(this).children('input[type=submit]').attr('disabled', 'disabled'); 
    return false; 
}); 

这对我的作品。 http://jsfiddle.net/5S72w/2/

+2

从提交事件返回false将停止表单完全被提交。该按钮将会正确禁用,但该页面只会坐在那里。 (这个问题是服务器端问题,所以不能在jsFiddle上进行演示。) – 2011-05-06 08:10:23

1

Disabled HTML form elements are not submitted

我猜'accept_proof'是你的提交按钮的名称,所以,因为它在提交表单之前被禁用,所以它的值不会在POST中设置到服务器; isset($_POST['accept_proof'])返回false,并且if内的代码未执行。

您需要通过其他方式检查POST表单,例如, isset()在窗体中的不同字段上。

0

我一直被困在这一整天。我的提交按钮版本调用验证函数onclick,然后在验证结束时禁用该按钮。我遇到的问题是,由于该按钮被禁用,并且表单的操作不是我所需要的,因此该按钮一旦禁用就不会提交表单。

经过几个小时在互联网上搜索,我发现我所要做的就是在禁用提交表单后调用我的表单的submit()函数。

所以,如果我的窗体的名字是myform

然后我打电话myform.submit()禁用后。

希望这会有帮助

相关问题