什么时候重新输入HTML输入标签?

时间:2009-05-14 18:24:16

标签: asp.net html

我有几个带有TextBox控件的asp.net页面。其中一些回传在输入(在TextBox控件内)而其他人没有。对于我的生活,我无法弄清楚为什么或为什么不......

我认为这与asp.net没有任何关系。不使用ajax等。尝试使用一个非常简单的html页面,仍然无法弄明白。

可能在< form>范围内或不在范围内标签?但我所有的asp:文本框控件都在标准的表单标签内,有些是做的,有些则没有。我所看到的与autoPostback无关。

编辑:

导致回发的示例标记:

<html>
<body>

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

</body>
</html>

我有asp.net页面肯定不会回发。代码很广泛,我不明白为什么不。

EDIT2:

如何阻止回发?

3 个答案:

答案 0 :(得分:5)

如果您只有一个文本框并且不想这样做,您可以随时在表单上添加隐藏的输入。

<html>
    <body>
        <form>
            <input type="text" ></input>
            <input type="text" style="visibility:hidden"></input>
        </form>
    </body>
</html>

我在IE7和FF3中试过这个并且它可以工作。

答案 1 :(得分:2)

通常大多数网络浏览器会检测表单何时只有一个文本框,并在按下输入时自动提交表单。

如果您有多个文本框或多个表单按钮,则行为会有所不同。 ASP.Net具有按钮的“defaultButton”机制,这意味着您可以指定在按下回车键的情况下哪个按钮是给定面板的提交按钮。您可以查看this post,了解有关设置表单以便正确回发的详细信息。

正如Boo所说,这不会被多行文本框触发。

如果您的表单中的行为在浏览器之间非常糟糕,您可能需要查看一个javascript解决方案来捕获正在按下的回车键,并“手动”通过javascript提交表单。

答案 2 :(得分:0)

如果文本框控件设置为autopostback,它将在每个按键上回发(因此允许触发TextChanged事件)。

接下来,将Multiline属性设置为false的文本框将显示为回传。实际发生的是表单提交,由浏览器中的行为定义。

将Multiline设置为true的框不会导致在Enter上提交表单。