【问题标题】:Using onsubmit to disable a button loses the button key / value in POST使用 onsubmit 禁用按钮会丢失 POST 中的按钮键/值
【发布时间】:2013-10-09 05:23:02
【问题描述】:

我试图防止表单的保存按钮被点击两次。当我在表单的标签中设置onsubmit='save.disabled=true' 时,提交时按钮被禁用,但 POST 数据不再包含“保存”键和值。由于表单上有多个按钮,因此我需要知道单击了哪个按钮。有没有其他方法可以禁用保存按钮而不会产生这种副作用?

<form method='post' action='dosomething.php?' enctype='multipart/form-data' onsubmit='save.disabled=true'>
    ... input types & Other buttons ...
    <input type='submit' name='save' value='Save'>
</form>

【问题讨论】:

  • 看来这个答案是特定于asp的。但它确实让我想到,不是更改按钮的值,而是每次单击按钮时更改按钮的“名称”属性,这样我就可以识别它是否是 Save、Save1、Save11...
  • 为什么不隐藏按钮而是禁用它?
  • 是的,行得通。如果没有更好的方法来做到这一点。因为我不喜欢消失的按钮,我可能会创建一个新的禁用假按钮来显示在它的位置。如果没有更好的解决方案,请为此创建一个帖子,我会接受它。

标签: javascript forms post


【解决方案1】:

您可以在禁用之前将您单击的按钮的值分配给另一个变量吗?大致如下:

$('#submit').click(function () {
    $('#form').append("<input type='hidden' name='" + $(this).attr('name') + "' value='"+
                     $(this).attr('value')+ "' />");
    $(this).attr("disabled", true);
    $('#form').submit();
    });

【讨论】:

  • 为什么你确定他使用 jQuery?
  • 我不使用 jQuery,但我能够接受并翻译它,我使用了 createElement() 并设置了所有属性。很好的主意。谢谢!
  • 是的,它真的不需要jquery,这可以在core is中完成。我只是举个例子。
【解决方案2】:

为什么不隐藏按钮。当您禁用表单元素时,它不会出现在 $_POST 中。

<form method='post' action='dosomething.php?' enctype='multipart/form-data' onsubmit='save.style["visibility"] = "hidden"'>
        ... input types & Other buttons ...
        <input type='submit' name='save' value='Save'>
    </form>

【讨论】:

  • 我需要保存按钮出现在 $_POST 中,这样我就知道按下了哪个按钮。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-08-31
  • 1970-01-01
  • 2021-06-30
  • 1970-01-01
  • 1970-01-01
  • 2011-02-02
  • 1970-01-01
相关资源
最近更新 更多