我正试图找出与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脚本只是鹦鹉回发发布的内容。
答案 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">
来解决此问题。