javascript - 取消输入时提交

标签 javascript c# asp.net ajax

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

为什么我点击进入后仍然刷新页面?

最佳答案

显式调用提交按钮的click:

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

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

关于javascript - 取消输入时提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29279545/

相关文章:

javascript - 无法隐藏 z-index 设置为 1 的兄弟元素

c# - Entity Framework 6 中的文件和文件组

c# - 如何在没有对话框的情况下打印 XPS?

c# - try{..}catch{...} 有 finally 和没有它的区别

c# - 基于坐标c#突出显示pdf中的元素

javascript - 切换 - 隐藏和显示

javascript - 按钮单击上的 setTimeout 事件不起作用

c# - ASP.NET Repeater : Is it possible to display on the first item one element, 但不适用于其余项目?

c# - 需要使用 Javascript 打开一个新窗口并传递存储在 C# 中的字符串变量中的查询字符串

javascript - Internet Explorer 8 event.wheelDelta 问题