当表单具有“提交”输入时,从输入(文本)字段点击“输入”

时间:2010-09-23 11:26:18

标签: javascript html forms submit

我正试图找出与this old question from last year所描述的行为有关的事情。我有一个带有单个输入文本字段的表单和一个“提交”按钮。与提出该问题的人不同,我希望在用户点击“输入”时提交表单。的确,这对我有用;然而,什么不起作用的是导致表单中的“提交”输入被虚拟点击的怪癖:Firefox和Chrome在发布的参数中包含“提交”输入的名称,而IE则没有。换句话说,我希望这个古怪的提交行为发布文本输入字段和提交输入。

有趣的是,我的表格正在做这件事直到我最近介绍的一些神秘变化。 (Firefox和Chrome仍然可以工作,但IE曾经工作过,现在却没有。)我可以弄清楚我改变了什么来打破它,但是@bobince似乎对这个怪癖有所了解我想我会要求看到如果有已知的(甚至可能是文件记录的)方法来控制它。

这是我的测试页:http://gutfullofbeer.net/post.html

这是一个简单的测试,我可以弥补:

<!DOCTYPE html>
<html>
  <body>
    <form name='foo' action='cgi/echoparams.cgi' method='post'>
      <input type='text' name='name' value=''>
      <input type='submit' name='submit_button' value='Submit'>
    </form>
  </body>
</html>

cgi脚本只是鹦鹉回发发布的内容。

2 个答案:

答案 0 :(得分:3)

是的,对不起,这不是直接可以修复的。我不知道你以前的“工作”案例是什么,但我怀疑可能会有额外的输入。 (仅当存在单个文本输入时才会发生异常行为。)

关于默认提交按钮是否“成功”的问题围绕历史地雷,最好永远不要依赖它。添加隐藏的输入以表示提交,并在提交按钮上省略name。将任何提交脚本放在form onsubmit而不是默认按钮上。

如果您有其他提交按钮用于不同的操作(例如编辑与删除),则使第一个按钮执行“默认”操作并设置无名称,然后添加name / value s覆盖其他按钮上的默认行为。如果点击,这些肯定会“成功”(并会收到click事件)。

答案 1 :(得分:2)

我偶然发现了这种奇怪的行为。我有一个案例,其中提交了name属性的值和按钮的value,以及一个不同的案例,其中按钮Tag的名称和值属性在我的POST数据中丢失。

(我使用了<button ...> - 标签,但似乎这无关紧要。)

经过一段时间的摆弄,我终于得到了解决方案,所以我注册了让你们知道。

IE7&amp; IE8开始提交name&amp;当前按钮标记的value,仅在第二个<input type="text">标记的情况下。如果页面中只有一个<input type="text">,则您在此输入字段中按Enter键name&amp;该按钮的value丢失了。

Radiobuttons,复选框,隐藏输入......无关紧要,您需要第二个<input type="text">来解决此问题。