[英]Cancelling submit on enter
我試圖在ASP:TextBox
元素中單擊enter時取消提交,當更改文本時它會執行asyncpostback
並使其單擊其他按鈕。 我對所有文本框都使用相同的Javascript函數,但其他文本框均定義為常規input
元素,並且沒有任何asyncpostback
方法。 它適用於每個文本框,但不適用於asp:TextBox
。 我不確定為什么,但是如果您知道如何解決此問題,我將非常高興。 當我在文本框中單擊Enter時,它會異步更新,但會立即刷新頁面。
這是我的代碼:
function cancel_enter(elem) {
if (window.event.keyCode == 13) {
document.getElementById("btnReg").focus();
document.getElementById("btnReg").click();
if (elem != null)
elem.focus();
return false;
}
else
return true;
return true;
}
<asp:UpdatePanel ID="UpdatePanel3" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<div id="user_info_all" runat="server">
<table dir="rtl" style="text-align:left;" id="table_user" runat="server">
<tr>
<td>שם משתמש:</td>
<td><asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional"><ContentTemplate>
<asp:TextBox TextMode="SingleLine" ID="reg_user" runat="server" MaxLength="50" OnTextChanged="reg_user_TextChanged" AutoPostBack="true"></asp:TextBox>
<div class="input-validation" id="reg_user_v" runat="server"></div></ContentTemplate>
<Triggers><asp:AsyncPostBackTrigger ControlID="btnReg" /></Triggers></asp:UpdatePanel>
</td></tr>
<tr>
<td>סיסמא:</td>
<td><div class="tooltip" title="הסיסמא חייבת להכיל 8 תווים לפחות">
<input class="tooltip" title="" type="Password" ID="reg_pass" runat="server" maxlength="50" onkeypress="return cancel_enter(this);" onkeyup="ValidateEmailPass(this);" /></div>
<div class="input-validation" id="reg_pass_v"></div></td></tr>
<tr>
<td>אימייל:</td>
<td>
<input type="text" id="reg_email" runat="server" maxlength="100" onkeypress="return cancel_enter(this);" onkeyup="ValidateEmailPass(this);" />
<div class="input-validation" id="reg_email_v"></div></td></tr>
<tr>
<td>גיל:</td>
<td>
<input type="text" id="reg_age" maxlength="2" runat="server" onkeypress="return cancel_enter(this);" onkeyup="ValidateEmailPass(this);" />
<div class="input-validation" id="reg_age_v"></div></td></tr>
<tr>
<td colspan='2' style="text-align:center"><asp:UpdatePanel ID="RegisterBtn" runat="server" UpdateMode="Conditional"><ContentTemplate>
<asp:Button runat="server" ID="btnReg" OnClientClick="return HideForm(this);" OnClick="btnReg_Click" Text="הירשם" UseSubmitBehavior="true" /></ContentTemplate></asp:UpdatePanel></td></tr>
</table>
</div>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="btnReg" />
</Triggers>
</asp:UpdatePanel>
單擊Enter后為什么仍刷新頁面?
有一個明確的調用, click
“提交”按鈕:
function cancel_enter(elem) {
// ...
document.getElementById("btnReg").click();
// ...
}
刪除此行,因為它明顯使您可以提交頁面。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.