提交带有链接的表单不起作用

Posted

技术标签:

【中文标题】提交带有链接的表单不起作用【英文标题】:Submit a form with an a link does not work 【发布时间】:2019-11-08 15:30:16 【问题描述】:

我有这个表格

<form method="POST" action="http://site.test/nodes/destroy" accept-charset="UTF-8" class="form-horizontal" role="form"><input name="_token" type="hidden" value="G2Mk8eZLwPOw5YYvKMSLj7kw6ThR4e2fP7aAWoGt">

    <a href="" onclick="form.submit();">
        <i class="fa fa-trash text-danger"></i>
    </a>


    <input name="ip" type="hidden" value="172.18.29.241">

</form>

当我点击垃圾箱时,它假设提交表单,它没有。

我可以看到页面正在刷新,但它从未到达我的控制器。

我错过了什么?

【问题讨论】:

尝试将href="" 更改为href="#"。你可能需要onclick="document.forms[0].submit();" 而不是你现在拥有的。 好的,现在试试。 只是补充一下,如果我这样做了,它将起作用&lt;button type="submit" class="btn btn-danger"&gt; Delete &lt;/button&gt; - 但目标是使用 a 标签。 为什么不使用提交按钮并将其样式设置为看起来像链接?如果您使用的是 Bootstrap(这些类暗示您可能是),那么样式就很简单了。 要确认,您应该为此使用按钮,而不是锚点。它们有不同的语义 【参考方案1】:

简而言之,不要为此使用链接(锚点)。这样做会导致您尝试编写 javascript 代码(以及诸如 href="#" 之类的黑客攻击),以尝试在您应该只使用按钮时与使用链接的语义作斗争。

由于您有 Bootstrap,将按钮设置为 看起来像链接是微不足道的。例如:

<button type="submit" class="btn btn-link">
    <i class="fa fa-trash text-danger"></i>
</button>

它保持 html 简洁明了,不会引入不必要的复杂性,无需 JavaScript 即可工作,并且更容易被屏幕阅读器等工具访问,并且使用元素的语义而不是对抗它们。

【讨论】:

以上是关于提交带有链接的表单不起作用的主要内容,如果未能解决你的问题,请参考以下文章

BootstrapValidator 表单提交不起作用

当javascript在元素上调用提交时,jQuery覆盖表单提交不起作用

带有 TinyMCE 的文本区域。提交按钮不起作用

引导下拉链接不起作用

为啥这种带有动态输入值的表单验证不起作用?

超链接在 Access 表单中不起作用