我有一个链接,而不是提交按钮:
<form>
<a href="#"> submit </a>
</form>
当单击时,我能让它提交表格吗?
我有一个链接,而不是提交按钮:
<form>
<a href="#"> submit </a>
</form>
当单击时,我能让它提交表格吗?
最佳方式是插入一个适当的输入标签:
<input type="submit" value="submit" />
<form id="form-id">
<button id="your-id">submit</button>
</form>
var form = document.getElementById("form-id");
document.getElementById("your-id").addEventListener("click", function () {
form.submit();
});
如果你还没有这样做,将后面的JavaScript代码用DOMContentLoaded
事件(仅选择load
以保持向后兼容性)包围起来:
window.addEventListener("DOMContentLoaded", function () {
var form = document.... // copy the last code block!
});
在链接中添加onclick
属性,并在表单中添加id
:
<form id="form-id">
<a href="#" onclick="document.getElementById('form-id').submit();"> submit </a>
</form>
无论您选择哪种方式,最终都需要调用formObject.submit()
(其中formObject
是<form>
标签的DOM对象)。
您还必须绑定这样一个事件处理程序,该处理程序调用formObject.submit()
,以便在用户单击特定链接或按钮时调用它。有两种方法:
Recommended: Bind an event listener to the DOM object.
// 1. Acquire a reference to our <form>.
// This can also be done by setting <form name="blub">:
// var form = document.forms.blub;
var form = document.getElementById("form-id");
// 2. Get a reference to our preferred element (link/button, see below) and
// add an event listener for the "click" event.
document.getElementById("your-id").addEventListener("click", function () {
form.submit();
});
Not recommended: Insert inline JavaScript. There are several reasons why this technique is not recommendable. One major argument is that you mix markup (HTML) with scripts (JS). The code becomes unorganized and rather unmaintainable.
<a href="#" onclick="document.getElementById('form-id').submit();">submit</a>
<button onclick="document.getElementById('form-id').submit();">submit</button>
A button
<button>submit</button>
A link
<a href="#">submit</a>
使用上述技术来添加事件监听器。
name="submit"
的按钮,那么您的表单的submit()
方法将无法访问。 - 2540625<input type="submit">
比 <a href="#" onclick="...">
更具语义意义,这在屏幕阅读器方面尤为重要。如果必须使用后者,我建议利用 ARIA。 - ComFreekid="submit"
也是一样的情况,submit()
方法将无法访问。 - myfunkyside如果你使用jQuery并需要一个内联的解决方案,这个方法非常有效;
<a href="#" onclick="$(this).closest('form').submit();">submit form</a>
另外,你可能想要替换掉
标签。<a href="#">text</a>
使用
<a href="javascript:void(0);">text</a>
当用户点击链接时,为了避免用户滚动到页面顶部,可以使用该方法。
href="#"
,然后用jquery选择所有这些链接,并在click
事件处理程序中调用e.preventDefault()
,以便浏览器不会滚动。 - Maurice您可以为表单和链接分配一些ID,然后订阅链接的 onclick
事件并 submit
表单:
<form id="myform" action="" method="POST">
<a href="#" id="mylink"> submit </a>
</form>
然后:
window.onload = function() {
document.getElementById('mylink').onclick = function() {
document.getElementById('myform').submit();
return false;
};
};
我建议您使用提交按钮来提交表单,因为它尊重标记语义,并且即使用户禁用了JavaScript也可以工作。
HTML & CSS - 无 JavaScript 解决方案
使您的按钮看起来像 Bootstrap 链接
HTML:
<form>
<button class="btn-link">Submit</button>
</form>
CSS:
.btn-link {
background: none;
border: none;
padding: 0px;
color: #3097D1;
font: inherit;
}
.btn-link:hover {
color: #216a94;
text-decoration: underline;
}
这个功能不需要特殊的函数就可以很好地运行。而且使用PHP编写也更加容易。<input onclick="this.form.submit()"/>
<input onclick="this.form.submit()"> Some Text</input>
这样的方式来实现? - CodyBugstein我的建议是:
<form action="/logout" method="POST">
<button type="submit" style="display:none;">Log Out</button>
<a href="/logout" onclick="event.preventDefault();this.closest('form').submit();">Log Out</a>
</form>
<form id="mailajob" method="post" action="emailthijob.php">
<input type="hidden" name="action" value="emailjob" />
<input type="hidden" name="jid" value="<?php echo $jobid; ?>" />
</form>
<a class="emailjob" onclick="document.getElementById('mailajob').submit();">Email this job</a>
document.getElementById("theForm").submit();
在我的情况下,它完美地运作。
你也可以在函数中使用它,例如:
function submitForm()
{
document.getElementById("theForm").submit();
}
将"theForm"设置为你的表单ID。完成了。
这是你问题的最佳解决方案: 在表单内,你有以下代码:
<li><a href="#">Singup</a></li>
<button type="submit" id="haha"></button>
button{
display: none;
}
在JS中,你可以这样做:
$("a").click(function(){
$("button").trigger("click");
})
就是这样。
target="_blank"
似乎不起作用。 - JPT