2011-05-10 44 views
29
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional"> 
<ContentTemplate> 
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> 
<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Send" /> 
</ContentTemplate> 
</asp:UpdatePanel> 

Enter鍵我必須執行Button1點擊事件,當用戶按下Enter keyTextbox1執行按鈕單擊事件時,用戶按下在文本框

+0

更好的定義,將上調用的函數都點擊按下鍵事件 – Badr 2011-05-10 09:47:44

+0

如果你把它放在發生自動權的形式標記? – Ruben 2011-05-10 09:50:27

回答

13

在aspx頁面加載事件,添加onkeypress的框。

this.TextBox1.Attributes.Add(
    "onkeypress", "button_click(this,'" + this.Button1.ClientID + "')"); 

然後添加此javascript以評估按鍵,如果是「輸入」,請單擊右鍵。

<script> 
    function button_click(objTextBox,objBtnID) 
    { 
     if(window.event.keyCode==13) 
     { 
      document.getElementById(objBtnID).focus(); 
      document.getElementById(objBtnID).click(); 
     } 
    } 
</script> 
+2

小心,因爲這會在Firefox中發出「window.event未定義」。 – 2012-06-29 12:53:49

+0

這是什麼修復?@AdrianMar – SearchForKnowledge 2014-12-03 14:11:38

+0

這並沒有爲我工作:http://stackoverflow.com/questions/27255385/how-to-prevent-the-trigger-of-another-button?noredirect=1#comment43006332_27255385 – SearchForKnowledge 2014-12-03 14:17:16

69

把你的形式asp.net面板控件內部設置其defaultButton屬性與您按鈕Id。見下面的代碼:

<asp:Panel ID="Panel1" runat="server" DefaultButton="Button1"> 
     <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional"> 
     <ContentTemplate> 
      <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> 
      <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Send" /> 
      </ContentTemplate> 
      </asp:UpdatePanel> 
    </asp:Panel> 

希望這會幫助你...

+2

DefaultButton - 優雅的簡單 - 謝謝! – QMKevin 2011-12-01 19:26:21

+3

+1令人驚訝的簡單,非常感謝。 :0) – 2012-06-20 14:45:17

+1

這是一個很好的解決方案。但是,需要.Net 2.0或更高版本。 – 2013-08-19 05:25:24

-2

你可以試試:

在HTML:

<asp:TextBox ID="TextBox1" runat="server" onKeyDown="submitButton(event)"></asp:TextBox> 
<asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" /> 

和Javascript:

function submitButton(event) { 
     if (event.which == 13) { 
      $('#Button1').trigger('click'); 
     } 
    } 

後面的代碼:

protected void Button1_Click(object sender, EventArgs e) 
{ 
     //load data and fill to gridview 
} // fixed the function view for users 

希望這有助於

+1

不是'onKeyDown'與控件的'textChanged'事件相同嗎?這意味着即使您正在使用if語句來確定按下哪個按鍵,也會爲每個輸入文本框的字符點擊該按鈕,這可能很糟糕。其他解決方案更好。 – Malachi 2014-11-07 16:57:34

2

CodeProject上有這個完整的解決方案:

http://www.codeproject.com/Articles/17241/Capturing-the-Enter-key-to-cause-a-button-click

和喜歡的文章說: 「決定哪種解決方案最適合您的需求」

=========== ========編輯答案============================

上面提到的鏈接,談論了兩個捕獲「Enter鍵」事件的方法:

JavaScript的(綁定onkeypress事件事件的對象,並創建一個javascript函數來檢查哪個鍵被按下,做你的邏輯)

_Page_Load在後面的代碼:_

//Add the javascript so we know where we want the enter key press to go 
if (!IsPostBack) 
{ 
    txtboxFirstName.Attributes.Add("onKeyPress", 
        "doClick('" + btnSearch.ClientID + "',event)"); 
    txtboxLastName.Attributes.Add("onKeyPress", 
        "doClick('" + btnSearch.ClientID + "',event)"); 
} 

Javascript代碼:

<SCRIPT type=text/javascript> 
    function doClick(buttonName,e) 
    { 
     //the purpose of this function is to allow the enter key to 
     //point to the correct button to click. 
     var key; 

     if(window.event) 
       key = window.event.keyCode;  //IE 
     else 
       key = e.which;  //firefox 

     if (key == 13) 
     { 
      //Get the button the user wants to have clicked 
      var btn = document.getElementById(buttonName); 
      if (btn != null) 
      { //If we find the button click it 
       btn.click(); 
       event.keyCode = 0 
      } 
     } 
    } 
</SCRIPT> 

面板控制

<asp:Panel ID="panSearch" runat="server" DefaultButton="btnSearch2" Width="100%" > 
    <asp:TextBox ID="txtboxFirstName2" runat="server" ></asp:TextBox> 
</asp:Panel> 

報價:

注意到面板標籤有一個名爲DefaultButton屬性。您將 此屬性設置爲您想要點擊的按鈕的按鈕ID Enter鍵按下事件。因此面板內部的任何文本框將 指導其輸入按鍵在面板的DefaultButton 屬性設置按鈕

+1

鼓勵與外部資源的鏈接,但請在鏈接上添加上下文,以便您的同行用戶瞭解它是什麼以及它爲什麼在那裏。如果目標網站無法訪問或永久離線,請始終引用重要鏈接中最相關的部分。 - [我怎麼寫一個好的答案?](http://stackoverflow.com/help/how-to-answer) – Albireo 2016-03-08 09:38:28

+0

@Albireo我編輯了答案,希望這將有助於:) – lienysd 2016-03-08 21:25:11

+0

面板爲我工作得很好。謝謝 – 2016-04-21 16:04:49

0

您可以用JavaScript/jQuery的做到這一點:

<script> 
    function runScript(e) { 
     if (e.keyCode == 13) { 
      $("#myButton").click(); //jquery 
      document.getElementById("myButton").click(); //javascript 
     } 
    } 
</script> 

<asp:textbox id="txtUsername" runat="server" onkeypress="return runScript(event)" /> 

<asp:LinkButton id="myButton" text="Login" runat="server" /> 
1

在只有html代碼,添加一個包含頁面控件的面板。在面板內添加一行DefaultButton =「buttonNameThatClicksAtEnter」。看下面的例子,應該沒有別的要求。

<asp:Panel runat="server" DefaultButton="Button1"> //add this! 
    //here goes all the page controls and the trigger button 
    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> 
    <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Send" /> 
</asp:Panel> //and this too!