一个标签可以作为提交按钮吗?

49

嗨,我正在尝试将“a”标签作为提交按钮使用。我在网上找到了一些代码。但是它没有起作用。

<a href="#" onclick="this.form.submit()">Submit</a>

是否有代码能够实现我的需求?

7个回答

46

给表单加上一个id,然后:

document.getElementById("yourFormId").submit();

最好的做法可能是给您的链接也加上一个id,并且摆脱事件处理程序:

document.getElementById("yourLinkId").onclick = function() {
    document.getElementById("yourFormId").submit();
}

@James Allardice 这个能用 JQuery 实现吗? - Joshua

40

试试这段代码:

<form id="myform">
  <!-- form elements -->
  <a href="#" onclick="document.getElementById('myform').submit()">Submit</a>
</form>

但是禁用JavaScript的用户将无法提交表单,因此您可以添加以下代码:

<noscript>
  <input type="submit" value="Submit form!" />
</noscript>

18

假设表单是直接的父元素,你可以这样做:

<a href='#' onclick='this.parentNode.submit(); return false;'>submit</a>

如果不能通过其他方式访问,你可以通过表单的名称属性来访问,如下所示:

<a href='#' onclick='document.forms["myform"].submit(); return false;'>submit</a>

可在此处查看两个示例:http://jsfiddle.net/WEZDC/1/


2
或者使用closest()获取最近的表单:<a href="#" onclick="this.closest('form').submit(); return false;"> - adriaan

7

这是对@ComFreek答案的改进:

<form id="myform">
  <!-- form elements -->
  <a href="javascript:;" onclick="document.getElementById('myform').submit()">Submit</a>
</form>

所以,<a>标签不会触发操作并重新加载您的页面。特别是如果您正在使用具有SPA框架的开发。


1

尝试以下类似的代码:

 <a href="#" onclick="this.forms['formName'].submit()">Submit</a> 

0

document.getElementById('myForm').action="javascript:function("+a+","+b+")";

你可以更改操作属性,并将一些变量作为函数的参数。

1
你的回答可以通过提供更多支持信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人可以确认你的答案是正确的。您可以在帮助中心找到有关如何编写良好答案的更多信息。 - Community

-6

在我看来,最简单的方法可能是这样的:

<?php>
echo '<a href="link.php?submit='.$value.'">Submit</a>';
</?>

在 "link.php" 中,您可以像这样请求值:

$_REQUEST['submit']

如果表单操作不是GET,该怎么办? - LEQADA
为什么要使用echo创建HTML?直接这样做不就行了 <a href="link.php?submit='<?php echo $value; ?>">提交</a> - sneilan
@sneilan,性能上有区别吗? - zPuls3

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