<form method="link" action="foo.html" >
<input type="submit" />
</form>
制作一个“链接按钮”。
但我知道我们可以写:
<a href="foo.html" ><input type="button" /></a>
哪个会做同样的事情。
有什么不同?他们的浏览器兼容性如何?
您链接到的那个页面不正确。HTML 中的属性没有link
值。method
这将导致表单回退到方法属性的默认值get
,这相当于href
无论如何都有一个属性的锚元素,因为两者都会导致 HTTPGET
请求。method
HTML5 中表单的唯一有效值是“get”和“post”。
<form method="get" action="foo.html">
<input type="submit">
</form>
这与您的示例相同,但有效;相当于:
<a href="foo.html">
您应该使用语义来确定实现表单的方式。由于没有供用户填写的表单字段,因此这不是真正的表单,因此您无需使用<form>
即可获得效果。
何时使用GET
表单的一个示例是搜索框:
<form action="/search">
<input type="search" name="q" placeholder="Search" value="dog">
<button type="submit">Search</button>
</form>
上面允许访问者输入他们自己的搜索查询,而这个锚元素没有:
<a href="/search?q=dog">Search for "dog"</a>
然而,当提交/点击时,两者都将进入同一页面(假设用户没有更改第一个文本字段
顺便说一句,我使用以下 CSS 来获取看起来像按钮的链接:
button,
.buttons a {
cursor: pointer;
font-size: 9.75pt; /* maximum size in WebKit to get native look buttons without using zoom */
-moz-user-select: none;
-webkit-user-select: none;
-webkit-tap-highlight-color: transparent;
}
.buttons a {
margin: 2px;
padding: 3px 6px 3px;
border: 2px outset buttonface;
background-color: buttonface;
color: buttontext;
text-align: center;
text-decoration: none;
-webkit-appearance: button;
}
button img,
.buttons a img {
-webkit-user-drag: none;
-ms-user-drag: none;
}
.buttons form {
display: inline;
display: inline-block;
}
第二种情况不会处理 A 标记内的附加输入参数。它只会跟随 href ,而表单会将所有输入添加到请求 GET 字符串。
<form action='http://localhost/?' method='get'><input type="text" name="test"><input type="submit" value="GO"/></form>
和
<a href='http://localhost/?'><input type="text" name="test"><input type="submit" value="GO"/></a>
会有所不同
功能上的差异。
虽然是的,但它们的行为都有些相似,但仍有一些理由将元素用于它们的用途。在大多数情况下,您会失去按钮链接的功能;例如,您不能右键单击并在新选项卡或窗口中打开。
还要考虑语义和规范:按钮元素(无论您使用哪种变体;<input type="button">
或<button></button>
)旨在供表单使用。
使用 a <a name="markname"></a>
,您可以使用 URL 将标签的位置滚动到视图中,例如http://example.com/index.html#markname
。我不认为表单或输入都这样做。而且我认为要使用<input type="button" window.location.href='foo.html'/>
,必须激活 JavaScript。另外,<form>s
通常会导致换行,<a>s
不要。
所有提到的方法都达到相同的结果,除非它们包含多个参数,例如:
<input type="button" value="Cancel">
<input type="button" value="Submit">
作为参考,我使用:
<form>
<INPUT TYPE='button' onClick="parent.location='location'">
</form>
对于按钮链接