【发布时间】:2012-04-03 18:14:26
【问题描述】:
我的页面有两个按钮,btnSearch 和 btnAddUser。 aspx 页面如下。如您所见,默认按钮是 btnAddUser。但是当我在文本框 txtFilter 中键入内容时,我想将默认按钮设置为 btnSearch。我添加了一个 JavaScript 函数 clickButton,并在 page_load 中添加了以下代码。问题是当我在文本框中输入内容后按回车键时,btnSearch 和 btnAddUser 都被单击了。有什么办法可以让 btnAddUser 不被点击。
txtFilter.Attributes.Add("onkeypress", "return clickButton(event, '" + btnSearch.ClientID + "')");
<asp:Panel ID="MainPanel" runat="server" DefaultButton="btnAddUser">
<table align="center" width="900">
<tr>
<td align="left" width="70%">
<asp:TextBox ID="txtFilter" runat="server" Width="200"></asp:TextBox>
<asp:Button ID="btnSearch" runat="server" Text="Search"
onclick="btnSearch_Click" CausesValidation="false" />
</td>
<td align="right" width="30%">
<asp:Button ID="btnAddUser" runat="server" Text="Add User" Width="85px"
CausesValidation="False" onclick="btnAddUser_Click" />
</td>
</tr>
<tr>
...
</asp:Panel>
function clickButton(e, buttonid) {
var evt = e ? e : window.event;
var bt = document.getElementById(buttonid);
if (bt) {
if (evt.keyCode == 13) {
bt.click();
return false;
}
}
}
更新: 谷歌搜索后,我找到了如下解决方案。它似乎工作。但它不适用于 Firefox?有人知道怎么解决吗?
function clickButton(e, buttonid) {
var evt = e ? e : window.event;
var keycode = evt.keyCode || evt.which || evt.charCode;
var bt = document.getElementById(buttonid);
if (bt) {
if (keycode == 13) {
evt.cancelBubble = true;
evt.returnValue = false;
if (evt.stopPropagation) {
evt.stopPropagation();
evt.preventDefault();
}
bt.click();
return false;
}
}
}
【问题讨论】:
-
此链接可能会对您有所帮助:codeproject.com/Articles/35180/…
-
您可能想查看 jQuery 的
keypress事件。它往往更可靠。 api.jquery.com/keypress -
对于 firefox,您的标准 CTRL / ALT / SHIFT 可以在 e.originalEvent 中找到。比如,e.originalEvent.shiftKey(其他的可以用firebug查看)
标签: asp.net defaultbutton