单击后如何禁用提交按钮?

IT技术 javascript jquery html jsp form-submit
2021-03-14 18:16:21

我在表单末尾有一个提交按钮。

我在提交按钮中添加了以下条件:

onClick="this.disabled=true;
this.value='Sending…';
this.form.submit();"

但是当它移动到下一页时,参数没有传递,而是传递了空值。

6个回答

您应该首先提交表单,然后更改提交的值:

onClick="this.form.submit(); this.disabled=true; this.value='Sending…'; "
对我来说,'this.disabled=true' 会阻止后端函数触发,即使它出现在提交之后!为了解决这个问题,我实现了一个 bool 值和 if 语句来检查第一次或后续的点击,并为后续返回 false。
2021-04-24 18:16:21
使用 ASP.NET 更新面板我禁用了提交行为。'OnClick="btnSave_Click" OnClientClick="this.disabled=true; this.value='正在保存......请稍候。';" UseSubmitBehavior="false"'
2021-04-25 18:16:21
这是最好的答案。一些浏览器不知道事先提交表单,这个解决方案可以解决这个问题。
2021-04-29 18:16:21
如果首先触发 HTML5 验证,则不会按预期工作。
2021-05-07 18:16:21
onclick 应该是小写
2021-05-12 18:16:21

可能您提交了两次表单。删除this.form.submit()或添加return false在最后。

你应该得到 onClick="this.disabled=true; this.value='Sending…';"

见@andreaskoberle 的回答
2021-04-30 18:16:21
@Andreas Köberle 下面的回答更好,尤其是在使用任何 ASP.NET 框架时。
2021-05-05 18:16:21
对于button type=submit标签替换this.valuethis.innerText
2021-05-13 18:16:21
小心,因为这在 IE8 和 Chrome 中不起作用......它的工作原理是它执行脚本所说的操作,但结果是它也禁用了表单的提交。
2021-05-21 18:16:21

在 IE11、FF53、GC58 上测试:

onclick="var e=this;setTimeout(function(){e.disabled=true;},0);return true;"
这很好用,但是如何在单击时更改“值”?
2021-05-11 18:16:21
这应该被接受;其他人不发送表格
2021-05-21 18:16:21

您需要在禁用按钮onsubmit的事件<form>

<form action='/' method='POST' onsubmit='disableButton()'>
    <input name='txt' type='text' required />
    <button id='btn' type='submit'>Post</button>
</form>

<script>
    function disableButton() {
        var btn = document.getElementById('btn');
        btn.disabled = true;
        btn.innerText = 'Posting...'
    }
</script>

注意:如果您有一个具有该required属性的表单元素,则这种方式将起作用。

提交表单时,禁用的 HTML 表单元素不会与 post/get 值一起发送。因此,如果您在单击后禁用提交按钮并且此提交按钮name设置属性,则不会在 post/get 值中发送,因为该元素现在已禁用。这是正常行为。

来解决这个问题的方法是使用隐藏的表单元素。