【问题标题】:ASP.NET CasusesValidation="false" not working on link button in IEASP.NET CausesValidation="false" 在 IE 中的链接按钮上不起作用
【发布时间】:2011-06-23 16:23:58
【问题描述】:

我的 aspx 页面中的链接按钮上的原因验证存在问题。我拥有的是一个带有两个文本框、一些验证控件和一个提交按钮的页面。验证控件已启用客户端脚本设置为 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 的修复程序,它不是那么干净,但它确实有效。我原以为只做等于 false 的原因验证就足够了。也许我错了。

我有一个脚本 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;

    });

});

【问题讨论】:

    标签: c# javascript jquery asp.net webforms


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-28
      • 1970-01-01
      • 2013-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-19
      • 1970-01-01
      相关资源
      最近更新 更多