为什么,如果我有两个<asp:textbox>,“Enter”(在键盘上)会被禁用?</asp:textbox>

时间:2012-05-18 12:58:02

标签: c# .net forms input submit

代码:

<form id="form1" runat="server">
<div>
    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
    <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
</div>
</form>

如果我点击输入字段并按Enter键,则不提交任何内容。为什么?如何为每个输入框决定要调用哪个页面,按Enter键?

3 个答案:

答案 0 :(得分:2)

您设置表单默认按钮:

<form id="Form1"
    defaultbutton="SubmitButton"
    runat="server">

或者您可以在代码中执行此操作 - Page_load:

Page.Form.DefaultButton = btnSearch.UniqueID;

另一个有用的提示是,您也可以在default button上设置asp:panel。将“表单”包装到面板中或多个面板中,可以按submit设置多个Panel Control按钮:

<asp:Panel runat="server" id="pnlForm1" DefaultButton="btnSubmit">
   <asp:Button runat="server" id="btnSubmit"/>
</asp:Panel>

答案 1 :(得分:1)

您可以将两个框放在单独的Pan​​el中,并为每个Panel设置DefaultButton。

UPDATE 如果您使用Button,DefaultButton将起作用,LinkBut​​ton仅适用于IE,有一些解决方法:

set linkbutton as default button for asp:panel in asp.net

Reusable Page_PreRender function in asp.net

答案 2 :(得分:1)

使用Jquery解决它:

$(document).ready(function () {
    $('body').bind('keypress', function (e) {
        var code = (e.keyCode ? e.keyCode : e.which);
        var button = $("#<%= SubmitButton.ClientID %>");
        if (button != null && code == 13) {
            button.click();
        }
    });
})

或在C#中

Page.Form.DefaultButton = SubmitButton.UniqueID;

HtmlForm.DefaultButton Property

Using Panel.DefaultButton property with LinkButton control in ASP.NET