使用普通链接提交表格


130

我要提交表格。但我不打算使用输入按钮,提交类型的基本方式,但一个一个链接。

下图显示了原因。我正在使用图像链接来保存/提交表单。因为我有用于图像链接的标准CSS标记,所以我不想使用输入提交按钮。

我尝试将onClick =“ document.formName.submit()”应用于a元素,但我更喜欢html方法。

替代文字

有任何想法吗?


3
使用按钮并通过CSS来显示图像或使用javascript,没有真正的方法可以使没有JavaScript的href提交表单变得简单。
安东S

我同意,不幸的是,这些不是使用javascript的简单方法
benhowdle89 2010年

4
您这样做的理由听起来像是虚假的经济。最好提供一个标准的CSS来提交按钮,并按照设计使用它们的方式使用表单。这里描述了一堆按钮CSS技术:tripwiremagazine.com/2009/06/…–
dnagirl

Answers:


169

两种方式。创建一个按钮并设置其样式,使其看起来像具有CSS的链接,或者创建一个链接并使用onclick="this.closest('form').submit();return false;"


55
Aaaaaaaand这里是关于如何风格的按钮可为纽带的引用:stackoverflow.com/questions/1367409/...
活动挂图

3
请注意,form.submit()没有JavaScript就无法使用
baptx '16

3
@baptx甚至旧的智能手机都启用了javascript
Mahdi Jazini

2
@MahdiJazini默认情况下,许多人禁用JavaScript,这可能会造成干扰并在某些情况下影响性能。如果JavaScript失败,它可能会破坏整个网站(例如,使用没有本地回退功能的CDN且第三方域被阻止)。如果出现HTML错误,您仍然可以使用该网站。开发人员应遵循渐进增强原则。
baptx

3
如果要支持不使用JavaScript的用户,请执行此答案中所述的第一个选项,将按钮的样式设置为链接。例如,input[type=submit].link { border: none; background: none; display: inline; color: blue; text-decoration: underline; }以及<input type=submit class="link" />
Jan Sverre

87

据我所知,没有某种形式的脚本,您就无法做到这一点。

<form id="my_form">
<!-- Your Form -->    
<a href="javascript:{}" onclick="document.getElementById('my_form').submit(); return false;">submit</a>
</form>

这里的例子。


1
和亲爱的访客...别忘了设置>>> id =“ my_form”,它的ID不是名称:D
Mahdi Jazini

这应该是最好和明确的答案,谢谢!
yehanny

28

只是这样的样式input type="submit"对我有用:

.link-button { 
     background: none;
     border: none;
     color: #0066ff;
     text-decoration: underline;
     cursor: pointer; 
}
<input type="submit" class="link-button" />

在Chrome,IE 7-9,Firefox中测试


仅作记录:您应该input使用CSS选择器选择适当的元素,而不必将类附加到HTML元素。
埃里克·卡普伦

尽管您的评论是首选的方式,但这并不总是可能的
Serj Sagan

为什么是首选方式?
2015年

这是一个半固定的编码实践,通常会留下更干净的html ...但这没什么大不了的
Serj Sagan 2015年

1
这个答案并不依赖于JavaScript或者这是一个少一点担心
马修锁定


5

用:

<input type="image" src=".."/>

要么:

<button type="send"><img src=".."/> + any html code</button>

加上一些CSS


0

绝对不能使用纯HTML提交带有链接的表单(a)标记。标准HTML仅接受按钮或图像。正如其他协作者所说的那样,可以使用按钮来模拟链接的外观,但是我想这并不是问题的目的。

恕我直言,我认为建议和接受的解决方案不起作用。

我已经在表单上对其进行了测试,浏览器没有找到对该表单的引用。

因此,可以使用JavaScript的单行代码使用thisobject 来解决该问题,该object引用了被单击的元素,该元素是表单的子节点,需要提交。this.parentNode表单节点也是如此。之后,仅以submit()该形式调用方法。无需对整个文档进行研究就可以找到正确的格式。

<form action="http://www.greatsolutions.com.br/indexint.htm"                   
   method="get">
    <h3> Enter your name</h3>
    First Name <input type="text"  name="fname"  size="30"><br>
    Last Name <input type="text" name="lname" size="30"><br>
    <a href="#" onclick="this.parentNode.submit();"> Submit here</a>
</form>

假设我输入自己的名字:

填写表格

我使用get了form method属性,因为提交后可以在加载页面的URL中看到正确的参数。

http://www.greatsolutions.com.br/indexint.htm?fname=Paulo&lname=Buchsbaum

显然,该解决方案适用于任何接受onclick事件或类似事件的标签。

this是与可直接使用或作为参数传递给函数的event变量(在所有主要浏览器和IE9及更高版本中可用)一起恢复上下文的绝佳选择。

在这种情况a下,请使用属性target,将标记行替换为下面的行,该属性指示已开始事件的元素。

<a href="#" onclick="event.target.parentNode.submit();"> Submit here</a>

@Nathan,我没有太多的写作经验Stackoverflow。我希望您的更正可以帮助我改善自己的风格。我的英语也不好。
Paulo Buchsbaum'17年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.