为什么button.formaction
属性不能在<form>
之外工作?
这失败了:
<button type="submit" formaction="a.jsp">a<button>
<button type="submit" formaction="b.jsp">b<button>
<button type="submit" formaction="c.jsp">c<button>
然而,这对我有用:
<form action="foo.jsp" method="post">
<button type="submit" formaction="a.jsp">a<button>
<button type="submit" formaction="b.jsp">b<button>
<button type="submit" formaction="c.jsp">c<button>
</form>
但是在我的应用程序中,使用表单没有意义,因为我从不想访问foo.jsp
而我没有默认值。有没有办法在不使用虚拟值或将表单默认为a.jsp
的情况下进行编码工作?
答案 0 :(得分:14)
通常,form
元素用于将数据发送到服务器。它包含了指定数据的元素,例如input
或button
元素。如果您向按钮元素添加name
和value
属性,则会将此 name-value-pair 发送到您的服务器。
如果您不需要向服务器发送任何(附加)数据,只需使用链接元素并使用CSS设置样式,如果您想:
<a href="a.jsp" class="btn">a</a>
<a href="b.jsp" class="btn">b</a>
<a href="c.jsp" class="btn">c</a>
formaction
属性
使用formaction
属性,您可以为一个表单指定多个提交网址。由于action
元素不再需要form
属性,因此您可以在提交按钮的formaction
中定义提交网址。提交表单后,浏览器首先检查formaction
属性;如果不存在,则继续在表单元素上查找action
属性。所以表单操作类似于后备或默认,它不是必需的:
<form method="post">
<input type="text" name="my-data" value="my data"/>
<button type="submit" formaction="a.jsp">a</button>
<button type="submit" formaction="b.jsp">b</button>
<button type="submit" formaction="c.jsp">c</button>
</form>
如果您使用按钮上的form
属性来引用关联的表单( id 值),您甚至可以将按钮放在{{ 1}}元素:
form