ASP.NET容器验证=“;false”;无法处理IE中的链接按钮

本文关键字:处理 IE 按钮 链接 false NET 验证 ASP | 更新日期: 2023-09-27 18:00:26

我的aspx页面中的链接按钮存在原因验证问题。我所拥有的是一个包含两个文本框、一些验证控件和一个提交按钮的页面。验证控件已将enable客户端脚本设置为true,并具有验证组。我的asp图像按钮分配了一个验证组,使验证等于true。我已将焦点设置为我的第一个文本框。

我的链接按钮是点击此处了解更多。。。。。我已经指定了验证组,并将原因验证设置为false。在Chrome中,一切都很正常。在IE中,当单击页面上除提交按钮之外的任何位置时,或当单击我的链接按钮时,我的第一个文本框将被验证,并显示错误。现在,如果我再次点击链接按钮,我会被重定向到我想要的页面。

这对我来说有点奇怪,有人有什么想法吗?

那么,我该如何解决这个问题,这样IE只有点击提交按钮才能验证。

以下是我的代码:

<span>Value 1:</span>
<asp:TextBox ID="Value1TextBox" runat="server" />
<asp:RequiredFieldValidator ID="Value1_1_Validator" EnableClientScript="true" ControlToValidate="Value1TextBox" Display="Dynamic" ForeColor="Red" Text="is required" ValidationGroup="MyValGroup" runat="server" />
<asp:RegularExpressionValidator ID="Value1_2_Validator" EnableClientScript="true" ControlToValidate="Value1TextBox" ValidationExpression="'somevalexpression'" Display="Dynamic" ForeColor="Red" Text="is not valid" ValidationGroup="MyValGroup" runat="server" />
...
<span>Value 2:</span>
<asp:TextBox ID="Value2TextBox" runat="server" />
<asp:RequiredFieldValidator ID="Value2_1_Validator" EnableClientScript="true" ControlToValidate="Value2TextBox" Display="Dynamic" ForeColor="Red" Text="is required" ValidationGroup="MyValGroup" runat="server" />
...
...
<asp:ImageButton ID="SubmitButton" ImageUrl="~/Images/submit.png" OnClick="SubmitButton_Click" ValidationGroup="MyValGroup" CausesValidation="true" runat="server" />
...
<asp:LinkButton ID="OurPolicyLink" PostBackUrl="~/Policy.aspx" ValidationGroup="MyValGroup" CausesValidation="false" Text="click here" runat="server" />

我使用jquery和javascript提出了一个修复方案,虽然不那么干净,但它确实有效。我本以为只要做因果关系验证就足够了。也许我错了。

我有一个脚本javascript文件,下面是它的样子。

$(function () {
    $"[id$=_Value1TextBox]").focus();
    $("[id$=_Validator]").each(function () {
        $(this)[0].enabled = false;
    });
    $("[id$=_SubmitButton]").click(function () {
        $("[id$=_Validator]").each(function () {
            $(this)[0].enabled = true;
        });
        Page_ClientValidate("MyValGroup");
        if (!Page_IsValid) {
            return false;
        }
        return true;
    });
});

ASP.NET容器验证=“;false”;无法处理IE中的链接按钮

这是因为您将焦点设置在文本框上。当焦点离开文本框时,它将触发验证。不要在文本框上设置焦点,或者在文本框上将CuasesValidation设置为False。后一个选项的问题是,在同一验证组中的其他内容触发验证之前,它不会验证文本框。