<form method ="link">或<a>?有什么不同?

Mag*_*eek 13 html forms get

看到我们可以写:

<form method="link" action="foo.html" >
<input type="submit" />
</form>
Run Code Online (Sandbox Code Playgroud)

制作"链接按钮".

但我知道我们可以写:

<a href="foo.html" ><input type="button" /></a>
Run Code Online (Sandbox Code Playgroud)

哪个会做同样的事情.

有什么不同?他们的浏览器兼容性是什么?

Nic*_*nks 23

您链接的页面不正确.HTML中linkmethod属性没有任何价值.这将导致表单回退到方法属性的默认值get,这相当于具有href属性的锚元素,因为两者都将导致HTTP GET请求.methodHTML5中表单的唯一有效值是"get"和"post".

<form method="get" action="foo.html">
    <input type="submit">
</form>
Run Code Online (Sandbox Code Playgroud)

这与您的示例相同,但有效; 并相当于:

<a href="foo.html">
Run Code Online (Sandbox Code Playgroud)

您应该使用语义来确定实现表单的方式.由于没有用户填写的表单字段,因此这不是一个表单,因此您无需使用<form>即可获得效果.

何时使用GET表单的示例是搜索框:

<form action="/search">
    <input type="search" name="q" placeholder="Search" value="dog">
    <button type="submit">Search</button>
</form>
Run Code Online (Sandbox Code Playgroud)

上面允许访问者输入他们自己的搜索查询,而这个锚元素不会:

<a href="/search?q=dog">Search for "dog"</a>
Run Code Online (Sandbox Code Playgroud)

然而,两者在提交/点击时都会转到同一页面(假设用户没有更改第一个中的文本字段


顺便说一句,我使用以下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;
}
Run Code Online (Sandbox Code Playgroud)