我正在尝试执行以下操作:
首先,一个textBox重点关注页面加载(这里没问题)
然后,当在该textBox中按下ENTER
按钮时,它会将焦点切换到第二个textBox。
最后,当在第二个textBox中按下ENTER
时,它会执行回发并在事件后面重新创建代码,就像按下经典<asp:button />
基于:
Fire event on enter key press for a textbox
和
JavaScript set focus to HTML form element
我设法提出:
<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 --%>
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键时,它会自动执行无用的回发和页面重新加载......这就是我被困住的地方
答案 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());
服务器端代码......如果有人能告诉我一些有用的客户端代码,我会接受它......