点击进入后,文本框会关注按钮?

时间:2012-03-05 18:45:19

标签: asp.net c#-4.0

这是我拥有的文本框字段,当用户输入值并按Enter键时,我希望在用户按Enter键时提交该值。

<div id="divUserInfo" >
    <table align="center">
        <tr  id="trDomain" runat="server" visible="false">
            <td class="tdLabel tdLabelInfo" >Domain Name</td>
            <td class="tdData">
                <asp:TextBox ID="txtDomain" runat="server" ToolTip="Network domain user is associated."></asp:TextBox>
                <asp:Label ID="lblRqdDom" runat="server" Text="required" CssClass="noshow" ></asp:Label>
            </td>
        </tr>

是的我知道我在表格中格式化,并且不会在未来的项目中使用表格。

3 个答案:

答案 0 :(得分:6)

TextBox失去焦点的回发

如果您只想在TextBox失去焦点时(通过按EnterTab或将焦点移至另一个控件)进行回发,请设置AutoPostBack属性TextBox true

TextBox中写一些东西并使其失去焦点后,你会得到一个回发。但是,我想,按Enter键可以提高不仅。 有关MSDN的更多信息:http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.textbox.autopostback.aspx

通过模拟提交回发按钮点击按Enter

如果您只想按回车键进行回发,可以在页面上添加Button,并将TextBox放在同一个Panel控件中。然后,您应为此DefaultButton设置Panel属性。当TextBox(或Panel中的任何其他控件)聚焦时,这应该在按 Enter 时调用按钮单击。

因此,您的代码可能如下所示(代码尚未经过测试):

...
<asp:Panel ID="grouppingPanel" runat="server" DefaultButton="btnSubmitDomain">
    <asp:TextBox ID="txtDomain" runat="server" ToolTip="Network domain user is associated." />
    <asp:Label ID="lblRqdDom" runat="server" Text="required" CssClass="noshow" ></asp:Label>

    <asp:Button ID="btnSubmitDomain" runat="server" Text="GO" OnClick="btnSubmitDomain_Click" />
</asp:Panel>
...

您可以在此处找到有关它的更多信息:http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.panel.defaultbutton.aspx

如果您在应用任何这些解决方案或其他问题时遇到任何问题,请与我们联系。

答案 1 :(得分:1)

您需要自定义客户端事件才能响应Enter按键以编程方式提交表单,或者您需要input类型submit。如果表单上有提交按钮,则在文本框中按Enter以提交表单是默认行为。如果您选择实现自定义事件处理程序,则需要在按下Enter键时将其附加到应提交表单的每个文本框中。

注意:如果表单上有多个submit按钮,则默认行为是调用第一个按钮,因为它们出现在DOM中。如果您不想先显示官方submit按钮,可以使用一些CSS重新排列显示,也可以在表单顶部放置一个隐藏按钮作为“默认操作”。 / p>

答案 2 :(得分:1)

首先,在page_load事件中注册此javascript:

    Public Shared Sub jsTrapEnter(ByRef p_Page As System.Web.UI.Page)

    Dim sScript As New System.Text.StringBuilder

    sScript.Append("<SCRIPT language=""javascript"">" & vbCrLf)
    sScript.Append("function fnTrapKD(btn){" & vbCrLf)
    sScript.Append(" if (document.all){" & vbCrLf)
    sScript.Append("   if (event.keyCode == 13)" & vbCrLf)
    sScript.Append("   { " & vbCrLf)
    sScript.Append("     event.returnValue=false;" & vbCrLf)
    sScript.Append("     event.cancel = true;" & vbCrLf)
    sScript.Append("     btn.click();" & vbCrLf)
    sScript.Append("   } " & vbCrLf)
    sScript.Append(" } " & vbCrLf)
    sScript.Append("}" & vbCrLf)
    sScript.Append("</SCRIPT>" & vbCrLf)

    If Not p_Page.ClientScript.IsClientScriptBlockRegistered("ForceDefaultToScript") Then
        p_Page.ClientScript.RegisterClientScriptBlock(p_Page.GetType, "ForceDefaultToScript", sScript.ToString)
    End If

End Sub

然后,此方法为每个要使用默认按钮的编辑器控件添加一个属性:

    Public Shared Sub DefaultButton(ByVal objTextControl As Web.UI.WebControls.WebControl, ByVal objDefaultButtonID As String)

    objTextControl.Attributes.Add("onkeydown", String.Format("fnTrapKD(document.all.{0})", objDefaultButtonID))

End Sub

然后在我们的page_load事件中注册每个编辑器的默认按钮:

            DefaultButton(txtStreetNm, btnSearch.ClientID)
        DefaultButton(txtSuffix, btnSearch.ClientID)