为什么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的情况下进行编码工作?
解决方法
通常,表单元素用于将数据发送到服务器.例如,它包含指定数据,输入或按钮元素的元素.如果为按钮元素添加名称和值属性,则会将此名称 – 值对发送到服务器.
如果您不需要向服务器发送任何(附加)数据,只需使用链接元素并使用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属性,您可以为一个表单指定多个提交URL.由于表单元素不再需要action属性,因此您可以在提交按钮的形成中定义提交URL.提交表单时,浏览器首先检查表单属性;如果不存在,则继续在表单元素上查找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>
如果您使用按钮上的表单属性来引用关联的表单(id值),您甚至可以将该按钮放在表单元素之外:
<form method="post" id="myForm"> <input type="text" name="my-data" value="my data"/> </form> <button type="submit" formaction="a.jsp" form="myForm">a</button> <button type="submit" formaction="b.jsp" form="myForm">b</button> <button type="submit" formaction="c.jsp" form="myForm">c</button>