簡體   English   中英

在輸入時取消提交

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM