如何在第一次提交后禁用表单


How to disable a form after the first submission?

  <form method="POST" action="<?php echo $_SERVER['SCRIPT_NAME']; ?>" onsubmit="document.getElementById('submit-button').disabled=true;">

我用那行来禁用按钮后第一次点击,但它不起作用…

按钮行:

<input type="submit" value="Register" id="submit-button"/>

我猜发生的事情是你的代码正在发射,但随后页面将刷新后,表单已经提交,按钮将不再被禁用。

如果是这种情况,那么当您知道页面正在作为表单提交的结果呈现时,您可以从服务器端将disabled属性插入到按钮的HTML中。

如果您要发送到同一页面,并希望在表单提交一次后禁用该按钮,您可以做的是使用PHP检查表单提交的数据是否已发送到页面。如果有,请禁用该按钮。它可能看起来像这样:

<form method="POST" action="<?php echo $_SERVER['SCRIPT_NAME']; ?>" <? if (isset($_POST['your_form_data'])) echo "disabled='disabled'" ?> >

您可能希望在数据库中保存一个布尔标志,例如isRegistered,因此,如果用户已经注册,则窗体将不会显示

不使用jquery(只是一个示例,最好使用jquery):

function disablebtn( idbtn ) {
    document.getElementById(idbtn).innerHTML = 'Loading...';
    document.getElementById(idbtn).disabled=true;
}
<form onsubmit="disablebtn('formPageBtn')">
    <button type="submit" id="formPageBtn">Send</button>
</form>

有了这个功能,当你按下按钮时,标签也会变成"loading…"。

发送表单后将动作更改为javascript:void%200 !

它在什么情况下"不起作用"?

如果你的意思是它不提交表单,按钮只是保持禁用状态,尝试使用setTimeout来稍微延迟禁用。

如果你的意思是按钮没有被禁用,你确定提交表单时页面没有重新加载吗?如果发生这种情况,您可能需要在提交按钮中添加<?php if($_POST) echo " disabled"; ?>