代码之家  ›  专栏  ›  技术社区  ›  Michael Kniskern

重置asp。net验证控制通过javascript?

  •  20
  • Michael Kniskern  · 技术社区  · 14 年前

    如何重置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 回复  |  直到 14 年前
        1
  •  39
  •   MK.    11 年前

    每次发帖子时都会触发页面验证,问题似乎在于您正在清除验证程序内容 cv.innerHTML = ''; ,这样您的验证程序消息将永远丢失,您将认为验证不会再次启动。

    对于@Glennular answer,代码不会处理验证器 Display 属性,如果其设置为 Dynamic 验证程序将使用 validator.style.display ,但如果设置为 None Inline 然后 validator.style.visibility 财产将被用来代替。

    最好使用asp。网 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>
    
        2
  •  17
  •   kerem    13 年前

    这将重置所有验证组中的所有验证程序。

    <script type="text/javascript">
        Page_ClientValidate('');
    </script>
    
        3
  •  0
  •   HoLyVieR    13 年前

    请尝试以下代码块:

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

    我希望这能像对我一样奏效。:)

        4
  •  -1
  •   Glennular    14 年前

    下面是重置所有验证器的代码

    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';
    
        5
  •  -3
  •   Liam Joshua    11 年前

    使用 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;
        }