2012-10-31 43 views
33

我有以下的asp.net文本框控件。消防事件輸入按鍵爲文本框

<asp:TextBox ID="txtAdd" runat="server" /> 

用戶經過該文本框寫的東西,按下ENTER鍵,我想從運行代碼隱藏一些代碼。

我該怎麼辦?

使用jQuery我捕捉ENTER鍵和解僱一些隱藏的按鈕事件

$(document).ready(function(){ 
    $(window).keydown(function(e){ 
     if(e.keyCode == 13) $('#<% addbtn.ClientID %>'.click(); 
    }); 
}); 

有沒有什麼更好的辦法?

回答

30

ASPX:

<asp:TextBox ID="TextBox1" clientidmode="Static" runat="server" onkeypress="return EnterEvent(event)"></asp:TextBox>  
<asp:Button ID="Button1" runat="server" style="display:none" Text="Button" /> 

JS:

function EnterEvent(e) { 
     if (e.keyCode == 13) { 
      __doPostBack('<%=Button1.UniqueID%>', ""); 
     } 
    } 

CS:

protected void Button1_Click1(object sender, EventArgs e) 
    { 

    } 
+0

另一種選擇是讓ASP:TextBox中獨特的一類並在javascript do $(「。MyUniqueButtonClass」)[0] .click ()。這比使用__doPostBack更簡單一些,並且依賴於asp.net實現細節。 –

+0

不是'UniqueID'而不是'UniqueId'嗎?與6個字符限制編輯:( –

+0

Sue Maurizio - Currect,應該是UniqueID我將修復它,謝謝 –

5

ahaliav狐狸的答案是正確的,但有一個小的編碼問題。
變化

<%=Button1.UniqueId%> 

<%=Button1.UniqueID%> 

它是區分大小寫。 Control.UniqueID Property

錯誤14「System.Web.UI.WebControls.Button」不包含關於「唯一ID爲」的定義和沒有擴展方法「唯一ID爲」接受型System.Web.UI.WebControls的」第一個參數.Button'可以找到(您是否缺少使用指令或裝配參考?)

Nb我在AutoPostBack上自己嘗試了TextChanged事件,然後再搜索答案,儘管它幾乎是正確的,但它並沒有給出我想要的結果,也沒有給出所要問的問題。它在失去對焦點Textbox而不是當按下返回鍵。

108
  1. 包裹內asp:Panel標籤

  2. 文本框隱藏有一個click事件,你想要做的事情,並給予<asp:panel>一個DefaultButton屬性與隱藏按鈕的ID的按鈕。

<asp:Panel runat="server" DefaultButton="Button1"> 
    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>  
    <asp:Button ID="Button1" runat="server" style="display:none" OnClick="Button1_Click" /> 
</asp:Panel> 
+14

更正確的答案比接受。 – KristianB

+8

這應該是接受的答案, – 2013-09-15 19:24:27

+0

This works。Thank you。 – dps

0

嘗試使用此選項。

更新是醒目的IsPostBack

TextBox1.Attributes.Add("onkeydown", "if(event.which || event.keyCode){if ((event.which == 13) || (event.keyCode == 13)) {document.getElementById('ctl00_ContentPlaceHolder1_Button1').click();return false;}} else {return true}; "); 
11

你可以換的文本框和按鈕的ASP之前編碼在Page_Load事件部分:面板,該面板的DefaultButton屬性設置爲您的提交按鈕的ID。

<asp:Panel ID="Panel1" runat="server" DefaultButton="SubmitButton"> 
    <asp:TextBox ID="TextBox1" runat="server" /> 
    <asp:Button ID="SubmitButton" runat="server" Text="Submit" OnClick="SubmitButton_Click" /> 
</asp:Panel> 

現在任何時候焦點位於面板內部時,按下Enter鍵後,「SubmitButton_Click」事件將會觸發。

+0

按鈕ID應該是'btnSubmit'是啊? – Muhammedh

2

我的jQuery的供電解決方案低於:)

文本元素:

<asp:TextBox ID="txtTextBox" ClientIDMode="Static" onkeypress="return EnterEvent(event);" runat="server"></asp:TextBox> 
<asp:Button ID="btnSubmitButton" ClientIDMode="Static" OnClick="btnSubmitButton_Click" runat="server" Text="Submit Form" /> 

的Javascript背後:

<script type="text/javascript" language="javascript"> 
    function fnCheckValue() { 
     var myVal = $("#txtTextBox").val(); 
     if (myVal == "") { 
      alert("Blank message"); 
      return false; 
     } 
     else { 
      return true; 
     } 
    } 

    function EnterEvent(e) { 
     if (e.keyCode == 13) { 
      if (fnCheckValue()) { 
       $("#btnSubmitButton").trigger("click"); 
      } else { 
       return false; 
      } 
     } 
    } 

    $("#btnSubmitButton").click(function() { 
     return fnCheckValue(); 
    }); 
</script> 
1
<asp:Panel ID="Panel2" runat="server" DefaultButton="bttxt"> 
    <telerik:RadNumericTextBox ID="txt" runat="server"> 
    </telerik:RadNumericTextBox> 
    <asp:LinkButton ID="bttxt" runat="server" Style="display: none;" OnClick="bttxt_Click" /> 
</asp:Panel> 

 

protected void txt_TextChanged(object sender, EventArgs e) 
{ 
    //enter code here 
} 
-1

我2C ..我已經使用了JavaScript,但發現它沒有事情是不是很期待。

使用面板的defaultButton屬性/屬性,因爲許多上述帖子建議。它是可靠的(EASY),適用於我測試過的所有瀏覽器。

1

嘗試如下: .aspx的:

<asp:TextBox ID="TextBox1" clientidmode="Static" runat="server" onkeypress="EnterEvent(event, someMethod)"></asp:TextBox>  
<asp:Button ID="Button1" onclick="someMethod()" runat="server" Text="Button" /> 

JS:

function EnterEvent(e, callback) { 
     if (e.keyCode == 13) { 
      callback(); 
     } 
    } 
+0

這幾乎是一個已經接受的答案的確切副本,它將如何爲問題增加任何價值? –

+0

謝謝馬可的評論。在我的情況下,這是解決方案。當我有不同的控制,我需要給他們同樣的行爲。而且我可以只使用一種通用方法而不是硬編碼。我只分享了我在項目中使用的經驗。 –

0
<input type="text" id="txtCode" name="name" class="text_cs"> 

和JS:

<script type="text/javascript"> 
$('.text_cs').on('change', function() { 
var pid = $(this).val(); 
console.log("Value text: " + pid); 
}); 
</script> 
相關問題