如何通过点击链接提交带有JavaScript的表单?

时间:2011-07-23 09:33:35

标签: javascript html forms hyperlink

我没有提交按钮,而是有一个链接:

<form>

  <a href="#"> submit </a>

</form>

我可以在点击时提交表单吗?

9 个答案:

答案 0 :(得分:192)

最好的方法

最好的方法是插入适当的输入标记:

<input type="submit" value="submit" />

最好的JS方式

<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();
});

DOMContentLoaded事件包含在后面的JavaScript代码中(backward compatiblity仅选择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()的事件处理程序,以便在用户单击特定链接或按钮时调用它。有两种方法:

  • 推荐:将事件侦听器绑定到DOM对象。

    // 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();
    });
    
  • 不推荐:插入内联JavaScript。有几个原因导致这种技术不值得推荐。一个主要的争论是你将标记(HTML)与脚本(JS)混合在一起。代码变得无组织,而且无法维护。

    <a href="#" onclick="document.getElementById('form-id').submit();">submit</a>
    
    <button onclick="document.getElementById('form-id').submit();">submit</button>
    

现在,我们必须决定触发submit()调用的UI元素。

  1. 按钮

    <button>submit</button>
    
  2. 链接

    <a href="#">submit</a>
    
  3. 应用上述技术以添加事件监听器。

答案 1 :(得分:62)

如果您使用jQuery并且需要内联解决方案,那么这将非常有效;

<a href="#" onclick="$(this).closest('form').submit();">submit form</a>

此外,您可能想要替换

<a href="#">text</a>

<a href="javascript:void(0);">text</a>

因此,点击链接后,用户不会滚动到页面顶部。

答案 2 :(得分:21)

您可以为表单和链接指定一些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的用户也会有效。

答案 3 :(得分:3)

HTML&amp; 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;

}

答案 4 :(得分:1)

这很好用,不需要任何特殊功能。使用php也更容易编写。 <input onclick="this.form.submit()"/>

答案 5 :(得分:0)

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

在我的案例中它完美无缺。

你可以在功能中使用它,比如,

function submitForm()
{
     document.getElementById("theForm").submit();
} 

设置&#34; theForm&#34;作为您的表单ID。它已经完成了。

答案 6 :(得分:0)

这是您问题的最佳解决方案: 在表格中你有这些代码:

<li><a href="#">Singup</a></li>
<button type="submit" id="haha"></button>
在CSS文件中

,执行以下操作:

button{
  display: none;
}
在JS中你可以这样做:

$("a").click(function(){
   $("button").trigger("click");
})

你去。

答案 7 :(得分:0)

我的建议是:

<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>

答案 8 :(得分:-1)

<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>