Инициировать состояние проверки на стороне клиента - PullRequest
1 голос
/ 04 июля 2011

У меня есть форма .net с несколькими текстовыми полями, и некоторые из них помечены RequiredFieldValidator.

<asp:TextBox MaxLength="150" Width="300" runat="server" ID="CityTXT"></asp:TextBox>
<asp:RequiredFieldValidator ControlToValidate="CityTXT"
                                    ValidationGroup="PersoanlDetailsVG" runat="server" ErrorMessage="Enter City">*</asp:RequiredFieldValidator>

Мне нужно вызывать функцию javascript, только если все эти поля имеют значения.

Как я могу вызвать состояние определенной клиентской проверки?

Спасибо

РЕДАКТИРОВАТЬ

Я пытался реализовать Page_ClientValidate, ностраница не отправляет обратно.

Вот мой код

function Validate() {
        var res = Page_ClientValidate("PersoanlDetailsVG");

        if (res == true) {
            //do someting
        }
        return res;
    }

<asp:Button Visible="false"  CssClass="Proceedtopayment" runat="server"  OnClientClick="Validate();return false;" OnClick="ConfirmBooking" CausesValidation="true" ValidationGroup="PersoanlDetailsVG" />

Он никогда не выполняет ConfirmBooking ()

Ответы [ 3 ]

2 голосов
/ 04 июля 2011

Посмотрите на клиентский API проверки от ASP.NET.

Вы можете проверить, если Page_IsValid на стороне клиента, чтобы определить, все ли валидаторы действительны.

Логическая переменная, которая указывает, является ли страница действительной в данный момент.Сценарии проверки постоянно обновляют эту информацию.

Например:

if(Page_IsValid){
   foo();
}

Необходимый файл WebUIValidation.js автоматически включается, если

  • Страница содержит один или несколько проверочных веб-элементов управления.
  • Страницу посещает браузер «верхнего уровня».

Согласно вашему обновленному ответу: Ваша страница не отправляется обратно, поскольку вы возвращаете false во всех случаях в onClientClick.

Вы должны вернуть результат проверки, если вы хотите отправить ответ на нажатие кнопки, если проверка прошла успешно:

OnClientClick="return Validate();"

Разница в решении @ Брайана и моем состоит в том, чтоPage_ClientValidate() - это функция, которая запускает проверку (и внутренне возвращает Page_IsValid), в то время как Page_IsValid возвращает только состояние проверки.Поскольку проверочные сценарии постоянно обновляют Page_IsValid, вызывать Page_ClientValidate().

излишне.
0 голосов
/ 04 июля 2011

Когда вы добавляете валидаторы asp .net на свою страницу aspx, на вашей клиентской странице автоматически включается ряд скриптов валидации. Эти сценарии включают в себя функцию «Page_ClientValidate», которая при вызове проверяет состояние валидатора для тех валидаторов, которые поддерживают проверку на стороне клиента.

Вы можете проверить состояние проверки на стороне клиента с помощью следующего:

var validPage = Page_ClientValidate();
0 голосов
/ 04 июля 2011

В этом случае лучше использовать пользовательский валидатор, сделать функцию проверки клиента и выполнять свою работу, если указаны значения

...