自定义验证器将文本变为红色

时间:2011-09-14 12:56:59

标签: c# javascript jquery validation

因此,此自定义验证程序使用jQuery根据文本框为空的验证将标签变为红色。我遇到的问题与验证组有关。

function ButtonClick(session, args, textBoxId, labelId) {
$(document).ready
    (
        function () {

            var is_valid = $("#" + textBoxId).val() != "";
            $("#" + labelId).css("color", is_valid ? "#686868" : "red");
            args.IsValid = is_valid;
        }
    );
}

这里我将传递给函数的标签变为红色。我需要传递验证组以及此验证器对应的。我不确定如何在切换验证组时将其他标签变回灰色。现在我有2个按钮和两个标签/文本框对。每个都在他们自己的验证组。当我点击按钮1时,一切都很完美。 Label1变红了。当我然后单击按钮2时,label2变为红色。标签1不会变回灰色。我需要它变成灰色。我需要一个适用于多个验证组的通用解决方案。

我不确定如何通过jQuery访问验证组。

由于

<div class="formLabel">
                        <asp:Label ID="lblClientId" runat="server" CssClass="text" meta:resourcekey="lblClientIdResource" />
                    </div>
                    <div class="formValue">
                        <asp:TextBox ID="tbClientId" runat="server" CssClass="text" meta:resourcekey="tbClientIdResource" />
                        <asp:CustomValidator ID="rfvClientId" runat="server" ValidationGroup="ClientId" meta:resourcekey="rfvClientIdResource" ControlToValidate="tbClientId" ClientValidationFunction="BtnClickClientId" style="position:absolute;"  ValidateEmptyText="True" ><asp:Image ID="Image2" ImageUrl="caution_20.png" runat="server" /></asp:CustomValidator>
                    </div>
<script src="../../Scripts/Test.js" type="text/javascript"></script>
    <script type="text/javascript">
        function BtnClickClientId(session, args) {
            ButtonClick(session, args, "<%= tbClientId.ClientID %>", "<%= lblClientId.ClientID %>");
        }
        function BtnClickLastName(session, args) {
            ButtonClick(session, args, "<%= tbSearchLastName.ClientID %>", "<%= lblSearchLastName.ClientID %>");
        }
    </script>

2 个答案:

答案 0 :(得分:0)

如何将javascript函数绑定到首先执行的按钮并重置页面上所有文本框的颜色?如果页面上有其他您不想影响的文本框,您可以按类定位它们,例如文本:

function ResetValidationStates()
{
    $(".text").each( function() { $(this).css("color", "#686868"); } );
}

此外,为什么不在CSS文件中创建类,然后使用jQuery .addClass(className).removeClass(className)方法设置所需的类,而不是在代码中设置内联颜色。你的文本框?这样,如果您改变网站的外观,就不会发现自己正在通过Javascript进行更改。

答案 1 :(得分:0)

我不熟悉ASP标记,但我确信<asp:Label>生成HTML <label>  标签。所以在这种情况下我可以建议如下:

function ButtonClick(session, args, textBoxId, labelId) {
    $(document).ready (
        function () {
            // $(".formLabel label").css("color", "#686868");

            // this one will work independently from ASP generated tags
            $(".formLabel").css("color", "#686868");

            var is_valid = $("#" + textBoxId).val() != "";
            $("#" + labelId).css("color", is_valid ? "#686868" : "red");
            args.IsValid = is_valid;
        }
    );
}

首先,您为所有标签设置默认的“#686868”颜色,然后进行验证。