在输入时取消提交

时间:2015-03-26 13:20:59

标签: javascript c# asp.net ajax

当我点击在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>

点击进入后,为什么还在刷新页面?

1 个答案:

答案 0 :(得分:0)

提交按钮显式调用click

function cancel_enter(elem) {
    // ...
    document.getElementById("btnReg").click();
    // ...
}

删除此行,因为它会明确地让您的按钮提交页面。