2011-07-04 9 views
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関数を呼び出す必要があります。

どのように特定のクライアント側の検証のステータスをトリガーできますか?

EDIT

おかげで私はPage_ClientValidateを実装しようとしましたが、ページがポストバックしません。ここで

は私のコードは、それは(ConfirmBookingを実行したことがない

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" /> 

です)

+0

[特定のasp.net検証制御をチェックする方法は有効ですか?](http://stackoverflow.com/questions/6441347/how-to-check-a-particular-asp-net-validation- control-is-valid) - リンクされた質問への私の答えを参照してください。フィールドに値が存在しなかった場合、RequiredFieldValidatorは最初のインスタンスでIsValidを返します。より良いオプションは 'CustomValidator'とRequiredFieldValidatorです。 –

+0

@Zhaph - Ben Duguidさんから感謝の言葉がありますが、特定のオブジェクトの検証は必要ありません。私は既存の検証のステータスを起動する必要があります – StrouMfios

+0

@StrouMfios:私は[私の答えを編集しました](http://stackoverflow.com/questions/6573615/trigger-the-status-of-the-client-side-validation/6573706#6573706)を更新します。 –

答えて

2

ASP.NETのclientside validation APIをご覧ください。

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

ページが現在有効かどうかを示すブール変数。 検証スクリプトはこれを常に の日付に保ちます。例えば

  • は、ページが1つのまたは複数の検証Webコントロールが含まれている場合

    if(Page_IsValid){ 
        foo(); 
    } 
    

    必要WebUIValidation.js -fileが自動的に含まれています。

  • ページが「アップレベル」のブラウザによって訪問されています。

onClientClickのすべての場合にfalseを返すため、更新された回答:あなたのページはポストバックしません。

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

OnClientClick="return Validate();" 

ブライアンのソリューションと鉱山@の差がPage_ClientValidate()トリガ関数であることです検証(および内部的にはPage_IsValidを返します)、Page_IsValidは検証の状態のみを返します。検証スクリプトは常にPage_IsValidを最新の状態に保つので、Page_ClientValidate()を呼び出すことは冗長です。

+0

Page_IsValid()メソッドの使用は、クライアント側の検証を実行しますが、サーバ側から呼び出されます。私が間違っているなら、私を訂正してください。 – StrouMfios

+2

矛盾するため、クライアント側の検証を実行するサーバー側にはメソッドがありません。あなたが意味するメソッドは、[PageValue](http://msdn.microsoft.com/en-us/library/system.web.ui.page.isvalid.aspx)と呼ばれる 'Page'のプロパティです。このプロパティは、[Page.Validate()](http://msdn.microsoft.com/en-us/library/0ke7bxeh.aspx)の後に呼び出され、サーバー側のすべてのバリデータがトリガされます。サーバー側とクライアント側の両方で常にチェックする必要があります。しかし、主題に戻る:私はすべてのクライアントの検証変数と関数を見つけることができる私の答えにリンクを提供しました。 –

+0

おかげでTim Schmelter、素晴らしいコメント。 – StrouMfios

0
を提供する場合は、この場合には、カスタムバリデータを使用してclientvalidation機能を作成し、自分の仕事をする方が良いです

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

次のようにして、クライアント側の検証状態を確認できます。

var validPage = Page_ClientValidate(); 
+0

私はあなたの提案を実装しましたが、ページはポストバックしていません。最初の投稿を編集しました – StrouMfios

関連する問題