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>
投稿を行うたびにページ検証が実行されます。問題のように見えるのは、検証コンテンツcv.innerHTML = '';
をクリアしていることです。これにより、検証メッセージが永久に失われ、検証が再度実行されないと見なされます。
@Glennular回答の場合、コードはバリデーターDisplay
プロパティを処理しません。バリデーターがDynamic
に設定されている場合、バリデーターはvalidator.style.display
を使用して切り替えられますが、None
またはInline
に設定されている場合、validator.style.visibility
プロパティは処理されます。代わりに使用されます。
代わりにasp.netValidatorUpdateDisplay
を使用することをお勧めします。
<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>
これは、すべての検証グループのすべてのバリデーターをリセットします。
<script type="text/javascript">
Page_ClientValidate('');
</script>
次のコードチャンクを試してください。
$("#<%= txtUserSettingsEmailRequiredValidator.ClientID %>").css("display", "none");
これが私のために働いたようにうまくいくことを願っています。 :)