2011-01-19 19 views
1

私はasp.net検証コントロールを使用しています。私は以来、フォームを提出する前にチェックしなければならないHTMLチェックボックスを導入しました。これは、次のMy機能は、読み取りますチェックボックスとaspnet検証の妥当性チェック

function terms(form) { 
var terms = document.getElementById("chkTerms").checked; 
var errorsArray = new Array(); 

if (terms == false) { 
    //alert("Terms not checked (works)"); 
    errorsArray.push("You must agree to the terms and conditions."); 
    if (errorsArray.length) { 
     document.getElementById("termsOutput").innerHTML = errorsArray.join("\n") + "<br />"; 
     return false; 
    } 
} 
else { 
    document.getElementById("termsOutput").innerHTML = ""; 
}} 

次のように呼び出されます。

<asp:Button ID="btnSubmit" runat="server" Text="Submit" OnClientClick="return terms(form)" /> 

私が持っている問題は、私はasp.netの検証や、私が書いたカスタムのチェックボックス検証を使用することができますいずれかのようです。フォームが投稿した後、asp.net検証が起動します!誰でも私が間違っていることを知っている?

答えて

0

ASP.NETボタンコントロールは、WebForm_DoPostBackWithOptionsメソッドを使用して、後でクライアント側の検証をトリガーします。ボタンクライアントのクリックハンドラに戻り値(フォーム)を追加すると、このステートメントは、ポストバック文が実行される前に(Page_ClientValidateを呼び出す)返され、検証が表示されません。 (if(terms!(if)の場合)falseを返すと、falseのときだけキャンセルされます。

HTH。

+0

OnClientClick =(!用語(フォーム)がfalseを返す)? – conflabuk

+0

はい、これを行うことができます。最初の検証が失敗した場合のみfalseを返します。 –

関連する問題