dotSITE
Учебник по ASP.NET Форумы Work in Murano Software.
новости материалы решения форумы группы настройки/о проекте
Назад

Как привязать нажатие клавиши 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>

 Назад
Контакт Реклама на сайте Спонсорам Веб мастерам

Лицензионное соглашение - © 2000-2012 dotSITE
Хостинг .NET предоставлен PARKING.RU
Поддержку сайта осуществляет Murano Software Inc., Offshore software development