客户端按键处理事件,设置焦点函数和__doPostBack ASP.NET

时间:2016-01-29 21:13:57

标签: javascript c# html asp.net

我正在尝试执行以下操作:

  • 首先,一个textBox重点关注页面加载(这里没问题)

  • 然后,当在该textBox中按下ENTER按钮时,它会将焦点切换到第二个textBox。

  • 最后,当在第二个textBox中按下ENTER时,它会执行回发并在事件后面重新创建代码,就像按下经典<asp:button />

  • 一样

基于:

Fire event on enter key press for a textbox

JavaScript set focus to HTML form element

我设法提出:

HTML:

 <asp:TextBox ID="txtNNoSerie" runat="server"  Width="150px" ClientIDMode="Static" onkeypress="EnterEventFirst(event)" AutoPostBack="false"></asp:TextBox>             
 <asp:TextBox ID="txtNNoIdentification" runat="server" Width="150px" ClientIDMode="Static" onkeypress="EnterEventSecond(event)" AutoPostBack="false"></asp:TextBox>
 <asp:Button id="btnAjouter" CssClass="ms-Button ms-Button--primary" onclick="btnAjouter_click" Text="+" ForeColor="White" runat="server"  Width="30px" />

    <input type="text" id="txtTest" /> <%-- Just for tests --%>

JS:

  function EnterEventFirst(e) {
      if (e.keyCode == 13) {
          document.getElementById('txtTest').value = 'got it';
          document.getElementById('<%=txtNNoIdentification.ClientID%>').focus();
      }
  } 



  function EnterEventSecond(e) {
      if (e.keyCode == 13) {
          document.getElementById('txtTest').value = 'Again';
          __doPostBack('<%=btnAjouter.ClientID%>', "");
      }
  }

代码背后:

    protected void btnAjouter_click(object sender, EventArgs e)
    {
    }

达到JavaScript函数,因为我可以在测试TextBox中看到“得到它”和“再次”,但只是半秒然后它消失... __DoPostBack功能不起作用。

看起来当你在一个textBox中按Enter键时,它会自动执行无用的回发和页面重新加载......这就是我被困住的地方

2 个答案:

答案 0 :(得分:1)

使用ClientID而不是UniqueID。

答案 1 :(得分:0)

好吧,当按下enter键时,textBox会自动返回postBack,然后确定。

我在服务器端做到了这一切,我讨厌这个,但我有点别无选择:

        txtNNoSerie.Focus();
        if (txtNNoSerie.Text != "")
            txtNNoIdentification.Focus();
        if (txtNNoSerie.Text != "" && txtNNoIdentification.Text != "")
            btnAjouter_click(this, new EventArgs());

服务器端代码......如果有人能告诉我一些有用的客户端代码,我会接受它......