【问题标题】:How can I change CSS Class of a textbox on failed Validation and then again change it back on successful validation?如何在验证失败时更改文本框的 CSS 类,然后在验证成功时再次将其更改回?
【发布时间】:2015-04-21 03:14:06
【问题描述】:

我有一个bootstrap 样式的注册页面。我有<asp:RequiredFieldValidator><asp:RegularExpressionValidator> 来验证表单。

现在我想在验证失败时更改样式,并且在验证成功时应该恢复正常。

我找到了几个答案,例如:txtBox.CssClass += "error_class" ;

但我想知道如何以确切的方式完成。我发现一个脚本确实根据失败的验证更改了 CSS,但是在 successful 验证后它并没有更改为原始 CSS。

文本框的原始css类:form-control

最简单的方法是什么,例如将边框颜色设置为红色...??

附: :在我使用的引导模板中,有两个字段:idclass。这里:

class : form-control

id : inputError

当前更改类的方法:

<script type="text/javascript">
        function BtnClick() {
            var val = Page_ClientValidate();

            if (!val) {
                var i = 0;
                for (; i < Page_Validators.length; i++) {
                    if (!Page_Validators[i].isvalid) {
                        $("#" + Page_Validators[i].controltovalidate).css("border-color", "red");
                    }
                }
            }
            return val;
        }
    </script>

【问题讨论】:

  • 两个问题。 1)您现在使用什么方法更改为失败的验证类?如果您正在检查 onChange,那么如果您正在检查 onSubmit,这将是一个不同的答案。 2) 为什么不能在 .NET 中同时使用 Class 和 ID? ID是你的问题吗?您是否查看过 ClientIDMode="Static"?
  • @KHeaney:我正在发布我用来更改问题中 CSS 的方法,但我没有签入 onChange。我在&lt;asp:TextBox&gt; 控件中分配的ID 也是我在代码文件中用于注册的那个。而在 template 中,id 用于向其中添加 Css 类。所以我猜没有必要使用ClientIDMode ..?
  • @KHeaney : 添加脚本,请看。
  • 你怎么打电话给BtnClick(),因为我无法让它工作,你能添加完整的代码

标签: html css asp.net twitter-bootstrap validation


【解决方案1】:

您应该只需要添加额外的条件来检查相反的条件。我还会专门为无效版本创建第二个类。

<script type="text/javascript">
    function BtnClick() {
        var val = Page_ClientValidate();

        if (!val) {
            for (i = 0; i < Page_Validators.length; i++) {
                if (!Page_Validators[i].isvalid) {
                    if (!($("#" + Page_Validators[i].controltovalidate).hasClass("form-invalid")))
                        $("#" + Page_Validators[i].controltovalidate).toggleClass("form-control form-invalid");
                }
                else {
                    if (!($("#" + Page_Validators[i].controltovalidate).hasClass("form-control")))
                        $("#" + Page_Validators[i].controltovalidate).toggleClass("form-control form-invalid");
                }
            }
        }
        return val;
    }
</script>

form-control 是您的普通班级,form-invalid 是您添加红色边框的班级。

如果您想更改方法,请参阅此处removeClass() if it exists 和此处jquery change class name

【讨论】:

  • 你能给我解释一下上面的if-else声明吗?第一个if 条件检查如果页面无效并且类未设置为form-invalid,那么它将向其中添加form-invalid 类..??我理解对了吗..?
  • 不完全。第一个if 条件检查页面上的每个验证器,而不是页面本身,以查看是否有任何验证器无效。第二部分是正确的。检查form-invalid 类是否存在。然后切换检查列出的所有类,因此它会同时查找form-controlform-invalid。如果你已经走到这一步,form-control 应该在课堂上,而form-invalid 不应该。 Toggle 将删除现有的类,即form-control,并添加缺少的类,即form-invalid
猜你喜欢
  • 2010-11-21
  • 2011-01-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-19
  • 1970-01-01
  • 1970-01-01
  • 2013-01-05
相关资源
最近更新 更多