ASP.NET 表单验证第一次不起作用

标签 asp.net html validation forms menu

<asp:UpdatePanel ID="LoginPanel" UpdateMode="Conditional" runat="server">
    <ContentTemplate>
        <div id="login">
            <div class="row">
                <div class="label">
                    <asp:Label ID="lblUsername" Text="<%$ Resources:Login, UserNameField %>" runat="server" />
                </div>
                <div class="field">
                    <asp:TextBox ID="txtUsername" MaxLength="12" runat="server" />
                    <asp:RequiredFieldValidator ID="rfvUsername" ControlToValidate="txtUsername" ValidationGroup="vgLogin" SetFocusOnError="true"
                        ErrorMessage="*" ToolTip="<%$ Resources:Login, UserNameRequired %>" runat="server" />
                </div>
            </div>

            <div class="row">
                <div class="label">
                    <asp:Label ID="lblPassword" Text="<%$ Resources:Login, PasswordField %>" runat="server" />
                </div>
                <div class="field">
                    <asp:TextBox ID="txtPassword" MaxLength="12" TextMode="Password" runat="server" />
                    <asp:RequiredFieldValidator ID="rfvPassword" ControlToValidate="txtPassword" ValidationGroup="vgLogin" SetFocusOnError="true"
                        ErrorMessage="*" ToolTip="<%$ Resources:Login, PasswordRequired %>"  runat="server" />
                </div>
            </div>

            <div class="row">
                <div class="label">
                    <asp:Label ID="lblRemember" Text="<%$ Resources:Login, RememberField %>" runat="server" />
                </div>
                <div>
                    <asp:CheckBox ID="chkRemember" Checked="true" ToolTip="<%$ Resources:Login, RememberToolTip %>" runat="server" />
                </div>
            </div>

            <div class="buttons">
                <asp:Button ID="btnLogin" Text="<%$ Resources:Login, Command %>" OnClick="btnLogin_Click" ValidationGroup="vgLogin" CausesValidation="true" runat="server" />
            </div>
        </div>
    </ContentTemplate>
</asp:UpdatePanel>

第一次,验证器不会检查字段是否已完成,无论如何都会提交表单,在最初的小问题之后,表单每次都会正确验证。

我知道我可以只询问(并且应该,无论如何)服务器端是否有 Page.IsValid,但我仍然希望验证能够在第一时间正确提醒用户输入错误先等待服务器响应。

我做错了什么?

最佳答案

如果 JS 文件之间存在依赖关系,则 JS 文件的加载顺序可能会导致此处出现问题。由于随机延迟,某些依赖项可能尚未得到满足,从而导致功能中断。如果是这种情况,您的控制台可能会给出提示。在随后的页面加载中,一切似乎都很好,因为 JS 文件已缓存,现在可以按正确的顺序无延迟地加载。

要尝试的事情:

希望这对您有所帮助。

关于ASP.NET 表单验证第一次不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4056903/

相关文章:

asp.net - 在 IE 中混合 NTLM 与表单例份验证(空 POST 问题)

asp.net - 从 HttpContext 获取 Web.Config 中注册的 HttpHandlers

javascript - Bootstrap 工具提示不起作用

在输入表单标记中使用 onclick 属性时 JavaScript 未捕获引用错误

javascript - 定时颜色更改 HTML

子对象上的 javax.validation.valid

c# - 键入时动态显示搜索结果

javascript - 如何从快速验证器 escape() 函数中排除字符

jquery - 从同一事件处理程序中触发 jquery 事件

html - Bootstrap 4 模态不透明度