当输入文本框时,Asp.net buttonclick服务器事件触发
问题描述:
我有一个文本框和一个按钮。当输入文本框时,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();
}
在服务器端的功能,我重定向到另一个页面。
因为它不重定向,我可以认为它不工作?
有什么我可以使它工作?
});
答
这是它:
<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>
答
你应该尝试封闭Textbox
并在Panel
的Button
并设置DefaultButton属性为面板的按钮。这将确保当你按回车键文本框中的按钮,点击会触发
或者你也可以通过设置DefaultButton的形式像 Page.Form.DefaultButton = [yourbutton]
答
威廉做以另一种方式!
请提供一个服务器端函数代码,可能是问题出在那里。如果服务器端处理程序没问题,那么你应该打开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>
答
<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”
尝试括起来在面板中设置面板的'defaultbutton'属性(该按钮),这应该触发按钮点击 – V4Vendetta
@ V4Vendetta这是值得作为它的答案slef –
@JonP添加它作为答案,但他已经接受了JQuery的方式:) – V4Vendetta