it-roy-ru.com

Выполнить событие нажатия кнопки, когда пользователь нажимает клавишу ввода в текстовом поле

<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Send" />
</ContentTemplate>
</asp:UpdatePanel>

Я должен выполнить событие нажатия Button1, когда пользователь нажимает Enter key в Textbox1

36
jams

В событии загрузки страницы aspx добавьте onkeypress в поле.

this.TextBox1.Attributes.Add(
    "onkeypress", "button_click(this,'" + this.Button1.ClientID + "')");

Затем добавьте этот javascript, чтобы оценить нажатие клавиши, и если это «ввод», нажмите правую кнопку.

<script>
    function button_click(objTextBox,objBtnID)
    {
        if(window.event.keyCode==13)
        {
            document.getElementById(objBtnID).focus();
            document.getElementById(objBtnID).click();
        }
    }
</script>
16
Muhammad Akhtar

Поместите форму в элемент управления панели asp.net и установите ее атрибут defaultButton с помощью идентификатора кнопки. Смотрите код ниже:

  <asp:Panel ID="Panel1" runat="server" DefaultButton="Button1">
        <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
         <ContentTemplate>
            <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
            <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Send" />
             </ContentTemplate>
          </asp:UpdatePanel>
    </asp:Panel>

Надеюсь, что это поможет вам...

78
Harun

Codeproject имеет полное решение для этого:

http://www.codeproject.com/Articles/17241/Capturing-the-Enter-key-to-cause-a-button-click

и, как говорится в статье: «решить, какое решение лучше всего соответствует вашим потребностям»

=================== РЕДАКТИРОВАННЫЙ ОТВЕТ ============================

Ссылка, упомянутая выше, говорит о двух способах захвата события «Enter Key»:

Javascript (свяжите событие onKeyPress с объектом и создайте функцию javascript, чтобы проверить, какая клавиша была нажата, и выполнить свою логику)

_Page_Load в коде позади: _

 //Add the javascript so we know where we want the enter key press to go
if (!IsPostBack)
{
   txtboxFirstName.Attributes.Add("onKeyPress", 
                   "doClick('" + btnSearch.ClientID + "',event)");
   txtboxLastName.Attributes.Add("onKeyPress", 
                  "doClick('" + btnSearch.ClientID + "',event)");
}

Javascript code:

<SCRIPT type=text/javascript>
    function doClick(buttonName,e)
    {
        //the purpose of this function is to allow the enter key to 
        //point to the correct button to click.
        var key;

         if(window.event)
              key = window.event.keyCode;     //IE
         else
              key = e.which;     //firefox

        if (key == 13)
        {
            //Get the button the user wants to have clicked
            var btn = document.getElementById(buttonName);
            if (btn != null)
            { //If we find the button click it
                btn.click();
                event.keyCode = 0
            }
        }
   }
</SCRIPT>

Панель управления

<asp:Panel ID="panSearch" runat="server" DefaultButton="btnSearch2" Width="100%" >
    <asp:TextBox ID="txtboxFirstName2" runat="server" ></asp:TextBox>
</asp:Panel>

Цитата:

Обратите внимание, что тег Panel имеет свойство DefaultButton. Ты устанавливаешь это свойство для идентификатора кнопки, на которую вы хотите нажать нажмите клавишу ввода события. Таким образом, любое текстовое поле внутри панели будет направьте его клавишу Enter, нажав на кнопку, установленную в DefaultButton собственность Группы

3
lienysd

только в html-коде добавьте панель, содержащую элементы управления страницы. Внутри панели добавьте строку DefaultButton = "buttonNameThatClicksAtEnter". Смотрите пример ниже, больше ничего не требуется.

<asp:Panel runat="server" DefaultButton="Button1"> //add this!
  //here goes all the page controls and the trigger button
    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
    <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Send" />
</asp:Panel> //and this too!
1
DIZAD

Вы можете сделать это с помощью javascript/jquery:

<script>
    function runScript(e) {
        if (e.keyCode == 13) {
            $("#myButton").click(); //jquery
            document.getElementById("myButton").click(); //javascript
        }
    }
</script>

<asp:textbox id="txtUsername" runat="server" onkeypress="return runScript(event)" />

<asp:LinkButton id="myButton" text="Login" runat="server" />
0
live-love