使用锚点和JavaScript提交表单-是不好的做法吗?

3

我目前有两个锚点标签用于向数据库发送url查询以投票,但我想改用表单来保持url的干净和避免重复查询(虽然不是真正的问题,但看起来很丑)。

现在这些锚点需要包含span标签,通过css为按钮(链接)添加其他背景元素,因此我无法使用常规的表单按钮。

您认为从锚点中使用javascript提交这些表单是不良做法吗?我可以想到一些其他解决方案,但它们似乎都不值得麻烦。我应该保留一个没有脚本的备用方案,让禁用Javascript的用户发送URL查询(我真的想完全避免URL查询)吗?如果是这样,最好如何执行?

谢谢,
Simon。

3个回答

8

您可以在表单中使用<button>。它可以包含内容,并且您可以自定义样式。

您可以使其看起来与您现在使用的<a>完全相同,但是单击它将提交一个POST表单。这就好像我们有一个做POST的<a>


谢谢,您每天都学到新东西 :) 我听说 IE6 和 IE7 在样式设置 input-buttons 的 padding(这在我的情况下很重要)方面存在问题。即使是对于 button 元素也是如此吗? - Simon Kjellberg
1
查看IE盒模型错误。如果您声明正确的DOCTYPE,这不应该是一个问题。 - irreputable

5
这样做您的按钮应该可以正常工作:
<button type="submit" value="upvote">
  <span>Vote Up</span>
</button>

<button type="submit" value="downvote">
  <span>Vote Down</span>
</button>

您应该尽量不要使用JavaScript提交表单,或者至少确保在JavaScript关闭时也能正常使用。


谢谢 - 真不敢相信我之前不知道这个! - Simon Kjellberg

1

我建议使用普通的表单提交按钮。
您可以应用CSS样式来使其看起来时尚,或者应用背景图片。

我不认为您的方法是一种不好的做法。但是对于使用Firefox的No-Script等插件的用户,表单可能会出现问题。


1
以上回复中有智慧。Noscript 有点隐蔽,因为除非你为一个站点启用脚本,否则你永远不知道自己错过了什么。确保在没有 JavaScript 的情况下良好降级是很好的。 - virstulte
问题在于我需要额外的背景样式,因此我需要能够在提交元素内部添加一个额外的标签。但是这只是一个问题,直到我刚刚发现按钮元素。不过还是谢谢 :) - Simon Kjellberg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接