代码之家  ›  专栏  ›  技术社区  ›  jimplode

在验证错误时设置相关输入的样式,如MVC

  •  0
  • jimplode  · 技术社区  · 15 年前

    我在网上搜索了一下,没有找到任何有帮助的东西,所以我想在这里问问。

    我有一个简单的asp.net 2.0表单。

    <form runat="server">
        <asp:ValidationSummary ID="ValidationSummary1" runat="server" />
    
        <asp:TextBox ID="txt1" runat="server" ValidationGroup="valGroup1"></asp:TextBox>
        <asp:RequiredFieldValidator ControlToValidate="txt1" ValidationGroup="valGroup1" runat="server" Display="Dynamic" ID="val1" ErrorMessage="*"></asp:RequiredFieldValidator>
    
        <asp:Button ID="btn1" runat="server" ValidationGroup="valGroup1" CausesValidation="true" Text="submit" />
    </form>
    

    当javascript不可用时,我可以通过代码隐藏来实现这一点,但我想做的是在javascript可用时发生同样的事情。

    我知道ASP.NET注入了一个名为Page_Validators的全局js变量,它是页面上所有验证程序跨度的数组。有没有一个简单的方法可以做到这一点,而不是通过这些循环??

    编辑

    我可以用以下方法来做:

    <script type="text/javascript">
    
            function ValidateInputs() {
    
                var validators = Page_Validators;
    
                for (var i = 0; i < validators.length; i++) {
                    var validator = validators[i];
                    if (!validator.isvalid) {
                        document.getElementById(validator.controltovalidate).setAttribute("style", "border:solid 1px red;");
                    }
                }
    
            }
    
        </script>
    

    只是想知道有没有更好的方法??

    我能让microwoft验证脚本调用我的验证方法吗?或者我可以手动钩住验证事件吗?

    2 回复  |  直到 15 年前
        1
  •  0
  •   Brian Mains    15 年前

    这是一个很好的方法;没有公共事件或其他可以利用的东西,除非你想开始用你自己的自定义事件替换公共事件(这会变得很混乱)。

    哦。

        2
  •  0
  •   jimplode    15 年前

    原来我的答案是我唯一能得到的!

    <script type="text/javascript">
    
            function ValidateInputs() {
    
    
                Page_ClientValidate();//Validate the validators using microsofts validation
    
                var validators = Page_Validators;
    
                for (var i = 0; i < validators.length; i++) {
                    var validator = validators[i];
                    if (!validator.isvalid) {
                        document.getElementById(validator.controltovalidate).setAttribute("style", "border:solid 1px red;");
                    }
                }
    
            }
    
        </script>
    

    同时,在按钮上设置 OnClientClick="ValidateInputs();" OnClientClick="ValidateInputs();return false;"

    推荐文章