HTML输入标签何时在按回车键时提交表单?

4
我有几个带有TextBox控件的asp.net页面。其中一些在输入框内按下回车键后会提交表单,而另一些则不会。我真的想不出为什么会这样或不会这样...
我认为这与asp.net无关。没有使用ajax等技术。尝试过一个非常简单的html页面,但仍然无法弄清楚。
也许与是否在<form>标签内有关?但是所有我的asp:textbox控件都在标准的form标签内,有些会提交表单,有些则不会。从我所看到的来看,这与自动提交无关。
编辑:
导致提交表单的示例标记:
<html>
<body>

<form>
<input type=text />
</form>

</body>
</html>

我有一些asp.net页面,它们明确不会回传(post back)。代码很复杂,我无法弄清楚为什么不回传。

编辑2:

如何防止回传?


你能展示一个页面的代码吗?其中一个文本框会触发postback,但另一个不会? - Matt Dawdy
3个回答

5
如果您只有一个文本框,而且不想出现这种情况,您可以在表单上放置一个隐藏的输入框。
<html>
    <body>
        <form>
            <input type="text" ></input>
            <input type="text" style="visibility:hidden"></input>
        </form>
    </body>
</html>

我已经在IE7和FF3中尝试过这个,它可以工作。

一旦解决方案变得明显,您提供了一个清晰的解决方案。 - andleer

2

通常大多数网页浏览器会检测表单中是否只有一个文本框,当按下回车键时自动提交表单。

如果表单中有多个文本框或多个提交按钮,则行为会有所不同。ASP.Net具有“defaultButton”机制,意味着您可以指定在按下回车键的情况下,哪个按钮是给定面板的提交按钮。您可以查看此帖子以获取有关如何正确提交表单的更多信息。

正如Boo提到的那样,多行文本框不会触发此机制。

如果您的表单在不同浏览器间的行为确实很糟糕,您可能需要查看使用JavaScript解决方案,以便捕捉按下回车键,并通过JavaScript“手动”提交表单。


0
如果文本框控件设置为自动回发,它将在每次按键时回发(从而允许触发TextChanged事件)。
接下来,将其Multiline属性设置为false的文本框将似乎在按Enter时回发...实际上正在发生的是由浏览器内部行为定义的表单提交。
将Multiline设置为true的框不会在按Enter时导致表单提交。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接