我正在尝试执行以下操作:
首先,文本框获得页面加载的焦点(这里没问题)
然后,当
ENTER
在该文本框中按下按钮,会将焦点切换到第二个文本框。最后,当
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 函数已达到,因为我可以在测试文本框中看到“得到它”和“再次”,但只持续了半秒,然后它就消失了...... __DoPostBack 函数不起作用。
看起来当您在文本框中按 Enter 时,它会自动执行无用的回发和页面重新加载...这就是我陷入困境的地方
最佳答案
使用 ClientID 而不是 UniqueID。
关于javascript - 客户端按键处理事件、设置焦点函数和 __doPostBack ASP.NET,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35094160/