ASP.NET CasusesValidation = "false" не работает на кнопку ссылки в IE - PullRequest
0 голосов
/ 23 июня 2011

У меня проблема с проверкой причин на кнопке ссылки на странице 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;

    });

});

1 Ответ

1 голос
/ 23 июня 2011

Это потому, что вы устанавливаете фокус на текстовое поле.Когда фокус покидает текстовое поле, он запускает проверку.Либо не устанавливайте фокус на текстовое поле, либо устанавливайте CuasesValidation = False в TextBox.Проблема с последним вариантом заключается в том, что он не проверяет текстовое поле, пока что-то еще в той же группе проверки не вызовет проверку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...