【问题标题】:HTML: Conditional submission of hidden input without JavaScriptHTML:在没有 JavaScript 的情况下有条件地提交隐藏输入
【发布时间】:2019-11-13 20:02:08
【问题描述】:

如果我有一个带有两个提交按钮的简单 html 表单:

<form method="POST" class="submit_form main_form" action="myaction">
    <input type="submit" name="goback" value="Go Back"  />
    <input type="submit" name="confirm" value="Confirm">
    <input type="hidden" name="secret" value="hello"/>
</form>

如果点击“确认”提交,是否可以只发布隐藏的输入?

如果单击“返回”提交,则应忽略隐藏的输入。我知道如何使用 JavaScript 来完成此操作,但想知道是否可以仅使用 html 来完成。

对于任何想知道的人,这就是您在 JavaScript 中执行此操作的方式:

<script>
    var elements = document.getElementsByClassName('submit_form');
    elements[0].addEventListener(
        'submit', 
        function(event) {
            if(event.explicitOriginalTarget.name === 'goback'){
                var hiddenInput = document.querySelector("input[name='step']");
                hiddenInput.setAttribute("disabled", "disabled");
            }
        }
    );
</script>

【问题讨论】:

  • 如果您真的想要,请在点击确认时创建一个事件,附加一个字段,然后提交表单。
  • 您是否需要发送任何其他数据,只排除机密?或者您只是想转到另一个页面而不发送任何内容?纯 html 解决方案有一个链接,您可以将其设置为按钮样式,并且无需提交即可将您重定向。
  • @DanyalSandeelo 如果可能的话,我想在没有 JS 的情况下这样做。
  • @smartilabs 表格还有更多内容,这只是一个基本示例,看看这是否真的可行。它仍然需要提交一些其他输入数据。
  • 创建表单时PHP在服务器上运行,用户填写表单时它不在循环中。

标签: javascript html forms input


【解决方案1】:

您可以将按钮分成两种不同的形式:

<form method="POST" class="submit_form main_form" action="myaction">
    <input type="submit" name="goback" value="Go Back"  />
</form>
<form method="POST" class="submit_form main_form" action="myaction">
    <input type="submit" name="confirm" value="Confirm">
    <input type="hidden" name="secret" value="hello"/>
</form>

这样,只有在点击确认按钮时才会发布秘密字段。

如果您想在 php 代码中执行此操作,您可以保留表单原样 并检查isset($_POST["confirm"])是否是点击确认按钮。

【讨论】:

  • 我认为如果没有其他非 JS 解决方案,这可能是最好的解决方案。不过显然需要额外的样式。
猜你喜欢
  • 1970-01-01
  • 2010-12-26
  • 1970-01-01
  • 2011-12-04
  • 2018-04-18
  • 2012-12-02
  • 1970-01-01
  • 2020-07-10
  • 2013-01-20
相关资源
最近更新 更多