1

いくつかのテキストフィールドを持つ.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を実装しようとしましたが、ページがpostBackしません。

これが私のコードです

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()を実行することはありません

4

3 に答える 3

2

ASP.NETのクライアント側検証APIをご覧ください。

クライアント側で確認Page_IsValidして、すべてのバリデーターが有効かどうかを検出できます。

ページが現在有効かどうかを示すブール変数。検証スクリプトは、これを常に最新の状態に保ちます。

例えば:

if(Page_IsValid){
   foo();
}

次の場合、必要なWebUIValidation.jsファイルは自動的に含まれます

  • このページには、1つ以上の検証Webコントロールが含まれています。
  • このページは「上位」ブラウザによってアクセスされています。

false更新された回答によると、すべての場合にで戻るため、ページはポストバックされませんonClientClick

検証が成功した場合にボタンクリックでポストバックする場合は、検証の結果を返す必要があります。

OnClientClick="return Validate();"

@Brianのソリューションと私の違いはPage_ClientValidate()、検証をトリガーする(そして内部的には返すPage_IsValidPage_IsValidが、検証の状態のみを返す関数であるということです。検証スクリプトPage_IsValidは常に最新の状態に保たれているため、を呼び出すのは冗長Page_ClientValidate()です。

于 2011-07-04T15:58:09.567 に答える
0

この場合、カスタムバリデーターを使用してclientvalidation関数を作成し、値が提供されている場合は作業を行うことをお勧めします

于 2011-07-04T15:57:36.383 に答える
0

asp .netバリデーターをaspxページに含めると、一連の検証スクリプトがクライアント側のレンダリングされたページに自動的に含まれます。これらのスクリプトには、「Page_ClientValidate」と呼ばれる関数が含まれています。この関数を呼び出すと、クライアント側のチェックをサポートするバリデーターのバリデーターの状態をチェックします。

以下を使用して、クライアント側の検証状態を確認できます。

var validPage = Page_ClientValidate();
于 2011-07-04T15:57:56.940 に答える