2012-03-05 151 views
4

這是我有的一個文本框字段,當用戶輸入一個值並回車時,我希望在用戶輸入時提交該值。當按下按鈕時,文本框會聚焦在按鈕上?

<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> 

是的我知道我正在格式化一個表格,並且不會爲我將來的項目使用表格。

回答

6

在文本框失去焦點回傳

如果你只想做回發時TextBox失去對焦(按EnterTab或移動焦點到其他控件),設置TextBox真正的AutoPostBack財產

TextBox中寫了一些東西並使其變得不那麼集中後,您將得到一個回傳。不過,我想這可以通過按Enter鍵提高不僅。 關於MSDN的更多信息:http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.textbox.autopostback.aspx

回傳,通過模擬提交按鈕點擊按Enter

如果你想只在按下Enter鍵回發,你可以把添加在頁面上Button,並把它與TextBox在同一Panel控制。那麼您應該爲此Panel設置DefaultButton屬性。這應該調用上的按鈕單擊,當TextBox(或Panel中的任何其他控件)被集中時,輸入

所以,你的代碼可以是這樣的(代碼沒有經過測試):

... 
<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

如果您在應用這些解決方案或其他問題時遇到任何問題,請告訴我。

+0

好吧,我再次嘗試面板解決方案,我工作。謝謝! – nhat 2012-03-05 19:45:18

+0

沒問題,我很高興幫助:)。 – 2012-03-05 19:50:25

1

你要麼需要一個定製的客戶端事件應對Enter按鍵以編程方式提交表單,或者你需要submit類型的input。在文本框中按Enter提交表單是默認行爲,如果表單上有提交按鈕。如果您選擇實施自定義事件處理程序,則需要將其附加到按Enter鍵時應提交表單的每個文本框。

注意:如果表單上有多個submit按鈕,則默認行爲是調用第一個按鈕,因爲它們出現在DOM中。如果您不想首先顯示官方submit按鈕,則可以使用一些CSS重新排列顯示,或者可以在窗體頂部放置隱藏按鈕作爲「默認操作」。「

1

首先,在你的Page_Load事件註冊此javascript:在

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 

然後:

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 

,則此方法補充說,你想有一個默認的按鈕,每個編輯控件的屬性我們的page_load事件註冊每個編輯器的默認按鈕:

  DefaultButton(txtStreetNm, btnSearch.ClientID) 
     DefaultButton(txtSuffix, btnSearch.ClientID) 
相關問題