Сбросить контроль валидации asp.net через JavaScript? - PullRequest
21 голосов
/ 26 мая 2010

Как мне сбросить контроль валидации asp.net через JavaScript? Текущий пример кода очищает текст сообщения об ошибке, но не сбрасывает контроль проверки для следующей отправки формы.

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>

Ответы [ 5 ]

39 голосов
/ 01 июня 2010

Проверка страницы запускается каждый раз, когда вы делаете сообщение, проблема в том, что вы очищаете содержимое валидатора cv.innerHTML = '';, таким образом ваше сообщение валидатора теряется навсегда, и вы думаете, что валидация больше не запускается ,

и для ответа @Glennular код не обрабатывает свойство валидатора Display, если оно установлено на Dynamic, то валидатор будет переключаться с использованием validator.style.display, но если установлено None или Inline тогда вместо него будет использоваться validator.style.visibility свойство.

Лучше использовать asp.net ValidatorUpdateDisplay вместо

<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>
15 голосов
/ 16 февраля 2012

Этот сбрасывает все валидаторы во всех группах валидации.

<script type="text/javascript">
    Page_ClientValidate('');
</script>
0 голосов
/ 04 апреля 2013

Использование 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;
    }
0 голосов
/ 26 октября 2011

Попробуйте следующий фрагмент кода:

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

Надеюсь, это сработает так же, как и у меня. :)

0 голосов
/ 26 мая 2010

Вот код для сброса всех валидаторов

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';
...