如何在PHP中提交后禁用提交按钮?

我在这个问题上浏览了其他问题,但找不到满意的答案。 我有一个测验网站,用户从四个选项中选择一个选项,然后点击提交。 我想在点击一次后禁用提交按钮。

有没有办法用PHP做到这一点? 如果没有,有没有办法用最小的JS做到这一点。

可用解决方案

既然你标记了问题jQuery,这里有一些你可以使用的简单jQuery解决方案:
要在单击时禁用它,您可以简单地:

$('input[type="submit"]').click(function() { this.disabled = true; }; 

您可以做得更好,并且只在提交表单后禁用它:

 $("form").submit(function() { $(this).find('input[type="submit"]').prop("disabled", true); }); 

解决方案演示

以下是上述逻辑的简单演示,在jsFiddle中: http : //jsfiddle.net/zb8CZ/
(请注意,在该实现中我没有使用jQuery,而是使用简单的JS;为了跨浏览器的可移植性,以及访问jQuery提供的许多其他方法(加上语法糖!)我推荐使用jQuery方法。

值得注意的是……

请注意,尝试在HTML中内联实现JS事件处理(使用onsubmit="..."onclick="..."属性)被认为是不好的做法,因为它会使您的布局/显示层混乱。 您还会丢失编辑器可能提供的任何语法突出显示和/或错误检查,并且通常会使开发和维护应用程序变得更加困难,因为代码没有逻辑顺序。

我留下一个代码:

  

对于像这样的禁用写入,一旦单击它将被禁用。

  $("#but_sub").click(function() { $(this).attr("disabled",true); } 

要么

  $('#but_sub').click(function() { $(this).attr("disabled","disabled"); } 

试试这个。 您可能希望将每个答案的值传递给通过AJAX执行后端工作的PHP文件。

   
A
B
C
D

有关jQuery的AJAX调用的更多信息,请点击此处 。

非常简单的javascript方法

 

这些天的常见做法是使用AJAX,但这不回答问题,也没有任何Javascript解决方案没有后端的任何帮助。 假设你有一个表格,例如:

 

提交到您的PHP文件进行处理时,您将通过$_GET$_POST访问您的表单数据,并执行您需要做的任何事情。 此时,您将能够推断出表单是否已提交或成功 – 基于此,您可以使用disabled属性标记inputbutton元素,这是一个基本示例:

  

然后,这将根据您的条件输出您的新表单并禁用该按钮。 我还应该注意,根据您的doctype您可能需要为该属性赋予一个值才能被视为有效标记,但一般而言:

     

一些相关的StackOverflow读物:

什么是doctype?
什么?:是什么意思? (三元运营商)
PHP:如何通过AJAX(jQuery版本)提交表单

试试下面的代码吧。 我希望它能帮到你……

  $('#contact-form').submit(function () { if ($(this).valid()) { $('.submit').attr("disabled", true); } }); 

带有用户消息的示例注册按钮:

  
 .sub-btn:hover { color: #FFFFFF; background-color: #406800; border-color: #82B33C; transition: all .25s linear; -o-transition: all .25s linear; -moz-transition: all .25s linear; -webkit-transition: all .25s linear; -webkit-appearance: none; border-radius: 4px; } .sub-btn { border-width: 1px; border-style: solid; font-family: 'Bitter', serif; font-weight: 700; font-size: 20px; margin-left: 0; padding: 10px; width: 100%; color: #f8f8f8; background-color: #82B33C; border-color: #406800; transition: all .25s linear; -o-transition: all .25s linear; -moz-transition: all .25s linear; -webkit-transition: all .25s linear; -webkit-appearance: none; border-radius: 4px; } .tx-shadow { text-shadow: 0px 2px 2px rgba(0, 0, 0, 0.45); }