21

JavaScript を使用して asp.net 検証コントロールをリセットするにはどうすればよいですか? 現在のコード サンプルは、エラー メッセージ テキストをクリアしますが、次のフォーム送信の検証コントロールをリセットしません。

var cv= document.getElementById("<%= MyValidationContorl.ClientID %>");
cv.innerHTML = '';

アップデート:

フォームの完全なコード サンプルを次に示します。別のフォーム送信で検証コントロールを起動できないようです:

function ClearData() {
    var cv = document.getElementById("<%= MyValidationContorl.ClientID %>");
    cv.innerHTML = '';
}

<html>
   <form>
       <asp:TextBox id="MyTextControl" runat="server" />
       <asp:CustomValidator ID="MyValidationContorl" runat="server" />
       <input type="button" onclick="javascript:ClearCCData(); return false;" runat="server" />
   </form>
</html>
4

5 に答える 5

39

投稿を行うたびにページの検証が発生します。問題のように見えるのは、バリデーターのコンテンツをクリアしていることですcv.innerHTML = '';。このようにして、バリデーターのメッセージが永久に失われ、検証が再び開始されないと思うでしょう。

@Glennular の回答の場合、バリデータへの設定が を使用して切り替えられるDisplay場合、コードはバリデータ プロパティを処理しませんが、その設定またはその後のプロパティが代わりに使用されます。Dynamicvalidator.style.displayNoneInlinevalidator.style.visibility

ValidatorUpdateDisplay代わりにasp.net を使用することをお勧めします。

<script type="text/javascript">
    function Page_ClientValidateReset() {
        if (typeof (Page_Validators) != "undefined") {
            for (var i = 0; i < Page_Validators.length; i++) {
                var validator = Page_Validators[i]; 
                validator.isvalid = true;
                ValidatorUpdateDisplay(validator);
            }
        }
    }
</script>

更新: 検証概要のリセット

<script type="text/javascript">
function Page_ValidationSummariesReset(){
    if (typeof(Page_ValidationSummaries) == "undefined")
            return;
    for (var i = 0; i < Page_ValidationSummaries.length; i++)
            Page_ValidationSummaries[i].style.display = "none";

}
</script>
于 2010-06-01T13:07:39.993 に答える
17

これにより、すべての検証グループのすべてのバリデーターがリセットされます。

<script type="text/javascript">
    Page_ClientValidate('');
</script>
于 2012-02-16T17:44:20.843 に答える
0

次のコードのチャンクを試してください:

$("#<%= txtUserSettingsEmailRequiredValidator.ClientID %>").css("display", "none");

これがうまくいくことを願っています。:)

于 2011-10-26T08:54:38.737 に答える
-1

すべてのバリデーターをリセットするコードは次のとおりです

function CleanForm() {
    document.forms[0].reset(); 

    for (i = 0; i < Page_Validators.length; i++) {
        Page_Validators[i].style.visibility = 'hidden';
    }

    return false;
}

または単一のもの:

document.getElementById("<%= MyValidationContorl.ClientID %>").style.visibility
 = 'hidden';
于 2010-05-26T18:58:52.783 に答える
-3

Don't work for me を使用Page_Validators[i].style.visibility = 'hidden'; するので、代わりに次のコード行を使用します。Page_Validators[i].enabled = false;

if (sFirstName == "" && sLastName == "") 
    {

        alert('Reminder: Please first enter student ID to search for the student information before filling out the rest of the form field values');
        //Disable all require field validation coontrol on the form so the user could continue to use the Lookup student function.
        document.forms[0].reset();
        for (i = 0; i < Page_Validators.length; i++) {
            //Page_Validators[i].style.visibility = 'hidden';
            Page_Validators[i].enabled = false;
        }
        return false;
    }
    else 
    {
        alert('Student Name = ' + sFirstName + ' ' + sLastName);
        document.forms[0].reset();

        for (i = 0; i < Page_Validators.length; i++) {
            //Page_Validators[i].style.visibility = 'hidden';
            Page_Validators[i].enabled = true;
        }
        return true;
    }
于 2013-04-03T22:14:13.017 に答える