我有一个页面有两个按钮,btnSearch和btnAddUser。 aspx页面如下。如您所见,默认按钮是btnAddUser。但是当我在文本框txtFilter中键入内容时,我想将默认按钮设置为btnSearch。我添加了一个JavaScript函数clickButton,并在page_load中添加了以下代码。问题是当我在文本框中输入内容后按Enter键时,单击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;
}
}
}
答案 0 :(得分:12)
你不需要javascript只是在另一个面板中包装搜索文本框并设置默认按钮,就像这样(我剥离了表格标签):
<asp:Panel ID="MainPanel" runat="server" DefaultButton="btnAddUser">
<asp:Panel ID="searchPanel" runat="server" DefaultButton="btnSearch">
<asp:TextBox ID="txtFilter" runat="server" Width="200"></asp:TextBox>
<asp:Button ID="btnSearch" runat="server" Text="Search"
CausesValidation="false" onclick="btnSearch_Click" />
</asp:Panel>
<asp:Button ID="btnAddUser" runat="server" Text="Add User" Width="85px" CausesValidation="False" onclick="btnAddUser_Click" />
</asp:Panel>
答案 1 :(得分:0)
将TextBox
包裹在Panel
中,并设置DefaultButton
属性。
<asp:Panel runat="server" DefaultButton="btnSearch">
<asp:TextBox ID="txtFilter" runat="server" Width="200" />
<asp:Button ID="btnSearch" runat="server" Text="Search"
onclick="btnSearch_Click" CausesValidation="false" />
</asp:Panel>
答案 2 :(得分:-1)
<script language="javascript" type="text/javascript">
function kPress(evnt, ID) {
var ButtonID = ID.id;
var btnSearchID = ButtonID.replace('txtFilter', 'btnSearch');
document.getElementById(btnSearchID).click();
}
</script>
<asp:TextBox ID="txtFilter" runat="server" Width="200" onkeypress="kPress(event, this);"></asp:TextBox>