当我点击在ASP:TextBox
元素中输入时,我正在尝试取消提交,该元素在文本更改时执行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>
点击进入后,为什么还在刷新页面?
答案 0 :(得分:0)
提交按钮显式调用click
:
function cancel_enter(elem) {
// ...
document.getElementById("btnReg").click();
// ...
}
删除此行,因为它会明确地让您的按钮提交页面。