这是几天前想到的,我忘了在哪,但是我把它记在了我的小笔记本上,打算发到博客里。我把它写下来是因为我听到一些把它过于复杂化的东西。
听说你有一个像下面这样的表单:
代码语言:javascript复制<form action="/submit">
<!-- inputs and stuff -->
<input type="submit" value="Submit">
</form>
当你提交表单,它会跳转到/submit
。 然后你需要 另一个 提交按钮,跳转到不同的URL。为什么需要这样做不重要,任何事都有原因,毕竟网页包含太多东西。
我找到了一些人们尝试处理这个问题的其它方法。
其中一种方法是放弃提交到不同的URL,但是给每个提交按钮一个相同的name
,不同的value
,然后当需要处理不同问题时检查value
值。
<input type="submit" name="action" value="Value-1">
<input type="submit" name="action" value="Value-2">
你可以在处理时读取value
值,并且如果你想,还可以进行重定向。对于所述问题,这是一种解决办法。
另一种方法是在按钮点击时,通过JavaScript改变form
的行为。有好几种方法实现,但是都归结为:
<form name="form">
<!-- inputs and stuff -->
<input type="submit" onclick="javascript: form.action='/submit';">
<input type="submit" onclick="javascript: form.action='/submit-2';">
</form>
它依赖于JavaScript工作,也不是很麻烦,但是它对渐进式增强的友好性,也的确不像它能做到的那样好。
正确的答案HTML已经为你想到了。我猜它或许并没有像它应该的那样众所周知,因此才有了这篇文章。
它是formaction
属性,你可以直接放在提交按钮里,它会覆盖表单自己的action
。
<form action="/submit">
<input type="submit" value="Submit">
<input type="submit" value="Go Elsewhere" formaction="/elsewhere">
</form>
就这些。
往期精选文章 |
---|
ES6中一些超级好用的内置方法 |
浅谈web自适应 |
使用Three.js制作酷炫无比的无穷隧道特效 |
一个治愈JavaScript疲劳的学习计划 |
全栈工程师技能大全 |
WEB前端性能优化常见方法 |
一小时内搭建一个全栈Web应用框架 |
干货:CSS 专业技巧 |
四步实现React页面过渡动画效果 |
让你分分钟理解 JavaScript 闭包 |
小手一抖,资料全有。长按二维码关注京程一灯,阅读更多技术文章和业界动态。