|
Назад
Как привязать нажатие клавиши Enter к определенной кнопке на форме?
Ниже предлагается универсальное решение для браузеров IE и Mozilla. К одной кнопке можно привязывать лишь один контрол или область (например, таблица), нажатие Enter внутри которой вызовет "нажатие" на заданную кнопку.
<%@ Page language="c#" AutoEventWireup="true" %>
<script runat="server">
void Page_Load()
{
RegisterControlForSubmit(txtBtnBox,btnSubmit);
RegisterControlForSubmit(tblLinkBtnArea,btnLinkSubmit);
}
void RegisterControlForSubmit( Control ctrl, Control btn ) {
string action;
if ( btn is Button || btn is ImageButton )
action = string.Format("\"document.getElementById('{0}').click();\"",btn.ClientID);
else
if ( btn is LinkButton )
action = string.Format("\"doLinkSubmit('{0}');\"",btn.ClientID);
else
throw new ArgumentException("Invalid submit button type","btn");
RegisterArrayDeclaration( "autoSubmit",action);
RegisterArrayDeclaration( "autoSubmitNames", string.Format("\"{0}\"",ctrl.ClientID) );
if ( !IsStartupScriptRegistered("_autoSubmit") )
RegisterStartupScript("_autoSubmit",
"\n<script language='javascript'><!--\n\tregisterSubmitHandlers();\n//--></sc"+"ript>");
}
void OnSubmitEvent( object sender, EventArgs e ) {
lbText.Text = ((Control)sender).ID + " clicked";
}
</script>
<script language=javascript><!--
var eventKey;
function registerSubmitHandlers() {
if ( typeof(autoSubmitNames)!="undefined" ) {
for( i = 0; i<autoSubmitNames.length; i++ ) {
var ob = document.getElementById(autoSubmitNames[i]);
if ( ob!=null )
ob.onkeydown = doSubmit;
}
if ( !document.all ) {
eventKey = "e.keyCode";
document.captureEvents(Event.KeyDown);
}
else
eventKey = "event.keyCode";
}
}
function doLinkSubmit(linkID) {
if ( document.all )
document.getElementById(linkID).click();
else
document.location.href = document.getElementById(linkID).href;
}
function doSubmit(e) {
if ( eval(eventKey)==13 ) {
for( i=0; i<autoSubmitNames.length; i++ ) {
if ( autoSubmitNames[i]==this.id ) {
eval(autoSubmit[i]);
return false;
}
}
}
}
//--></script>
<html>
<body>
<form runat="server">
<asp:TextBox id="txtBtnBox" runat="server"/>
<asp:Button id="btnSubmit" runat="server" Text="Submit" OnClick="OnSubmitEvent"/>
<br><br>
<table style="border:1px black solid;border-collapse:collapse;" runat="server" cellpadding=5 id="tblLinkBtnArea">
<tr>
<td><asp:TextBox id="txtLinkBox1" runat="server"/></td>
</tr>
<tr>
<td><asp:TextBox id="txtLinkBox2" runat="server"/></td>
<td rowspan=2 valign="center">
<asp:LinkButton id="btnLinkSubmit" runat="server" Text="Submit" OnClick="OnSubmitEvent"/>
</td>
</tr>
</table>
<br><br>
<asp:Label id="lbText" runat="server" EnableViewState="false"/>
</form>
</body>
</html>
Назад
|
|