2011-11-29 91 views
0

我有一个文本框和一个按钮。当输入文本框时,Asp.net buttonclick服务器事件触发

该按钮在代码隐藏上有一个btn_click(obj, eventargs)

这是在master的页面。

当文本框被聚焦并单击enter我要的是,

我想运行的功能,换句话说,单击按钮。

所以,我写...

$("#" + "<%= txtSearch.ClientID %>").keypress(function (e) { 
    var code = (e.keyCode ? e.keyCode : e.which); 
    if (code == 13) { 
    $("#" + "<%= imgBtnSearch.ClientID %>").click(); 
} 

在服务器端的功能,我重定向到另一个页面。

因为它不重定向,我可以认为它不工作?

有什么我可以使它工作?

});

+1

尝试括起来在面板中设置面板的'defaultbutton'属性(该按钮),这应该触发按钮点击 – V4Vendetta

+0

@ V4Vendetta这是值得作为它的答案slef –

+0

@JonP添加它作为答案,但他已经接受了JQuery的方式:) – V4Vendetta

回答

1

这是它:

<script type="text/javascript"> 
    $(function() { 
     $("#" + "<%= txtSearch.ClientID%>").keypress(function (e) { 
      var code = (e.keyCode ? e.keyCode : e.which); 
      if (code == 13) { 
      e.preventDefault(); 
      $("#" + "<%= imgBtnSearch.ClientID%>").click(); 
     }}); 
    }); 
</script> 
0

你应该尝试封闭Textbox并在PanelButton并设置DefaultButton属性为面板的按钮。这将确保当你按回车键文本框中的按钮,点击会触发

或者你也可以通过设置DefaultButton的形式像 Page.Form.DefaultButton = [yourbutton]

0

威廉做以另一种方式!

请提供一个服务器端函数代码,可能是问题出在那里。如果服务器端处理程序没问题,那么你应该打开JavaScript控制台并检查是否有错误(如果是这样,那么重定向不会发生)。

并尝试使用此功能而不是您的按钮服务器单击。

$("#" + "<%= txtSearch.ClientID %>").keypress(function (e) { 
    var code = (e.keyCode ? e.keyCode : e.which); 
    if (code == 13) { 
     <%= scriptPostBackButton1 %> 
    } 
} 

在这个例子中,点击文本框上的'enter'会导致服务器端的点击处理程序与回发。这是你需要的行为吗?

代码隐藏:

public partial class _Default : System.Web.UI.Page 
{ 
    public string scriptPostBackButton1 = ""; 

    protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!IsPostBack) 
     { 
      scriptPostBackButton1 = 
       ClientScript.GetPostBackEventReference(new PostBackOptions(clickableButton, "", "", false, false, true, true, true, "")); 
     } 
    } 


    protected void clickableButton_Click(object sender, EventArgs e) 
    { 
     string result = "ok, it's working";    
    } 
} 

Default.aspx的

<form id="Form1" runat="server"> 
    <asp:TextBox ID="tbEnter" runat="server" onkeydown=" return clientHandler(event);" /> 
    <asp:Button ID="clickableButton" runat="server" Text="click" Width="49px" /> 
</form>  
1
<form id="Form1" runat="server"> 
    <asp:Panel ID="Pnl1" runat="server" DefaultButton="BtnTest"> 
    <asp:TextBox ID="TxtTest" runat="server"></asp:TextBox> 
    <asp:Button ID="BtnTest" runat="server" Text="Test" OnClick="BtnTest_Click" /> 
    </asp:Panel> 
</form> 

试试这个,这将触发仅适用于文本框的 “为btnTest” “TxtTest”

相关问题