【问题标题】:CustomValidator in C# not picking up colourC# 中的 CustomValidator 不拾取颜色
【发布时间】:2015-11-19 11:25:53
【问题描述】:

我正在尝试在我的网页内的下拉列表中使用CustomValidator,但由于下拉列表的颜色没有改变,它在表单提交时没有被正确触发。我已经在文本框上进行了相同的验证,但我显然在下拉菜单中做错了事,希望有任何帮助!

我用过这个Change Text Box Color using Required Field Validator. No Extender Controls Please

我认为正在发生的事情是在表单提交时触发了验证。 .cs 文件和 javascript 文件中的逻辑是相同的,因此如果用户禁用了 javascript,验证仍应启动。

下拉列表中的第一个值是“选择一个值”,所以我的验证说只要不是那个值就可以继续。

.aspx 文件

<p class="form-row">
        <asp:DropDownList ID="valueDropDown" runat="server"  CssClass="tablet" ></asp:DropDownList>
        <asp:CustomValidator ID="CustomValidator4" runat="server" ErrorMessage=""
            ControlToValidate="valueDropDown" ClientValidationFunction="ValidateDD"
            OnServerValidate="CustomValidator4_ServerValidate"
            ValidateEmptyText="True" >
        </asp:CustomValidator>
 </p>

.cs 文件

 protected void CustomValidator4_ServerValidate(object source, ServerValidateEventArgs args)
        {
            bool is_valid = valueDropDown.Text != "Select a value";
            valueDropDown.BackColor = is_valid ? Color.White : Color.Red;
            args.IsValid = is_valid;
        }

Javascript

function ValidateDD(source, args) {
    var is_valid = $("#valueDropDown").val() != "Select a value";
    $("#valueDropDown").css("background-color", is_valid ? "white" : "#EEB4B4"); 
    args.IsValid = is_valid;
}

任何帮助将不胜感激 - 我真的不知道为什么这不起作用!

编辑

好的,继@Gian-Paolo 所说的之后,我现在已经从我的代码中删除了第一个必需的验证器,但我仍然遇到同样的问题。颜色仍未应用。

现在已删除:

<asp:RequiredFieldValidator ID="ValidatorDD" ControlToValidate="valueDropDown" runat="server" InitialValue="-1" Text="* Please select a value" ErrorMessage="" CssClass="error" Display="Dynamic" ></asp:RequiredFieldValidator>

【问题讨论】:

    标签: javascript c# jquery asp.net validation


    【解决方案1】:

    您正在附加到相同的 valueDropDown 控件 2 个验证器:

    <asp:RequiredFieldValidator ID="ValidatorDD" ControlToValidate="valueDropDown"... >
    </asp:RequiredFieldValidator>
    <asp:DropDownList ID="valueDropDown" runat="server"  CssClass="tablet" >
    </asp:DropDownList>
    <asp:CustomValidator ID="CustomValidator4" ...
            ControlToValidate="valueDropDown" ClientValidationFunction="ValidateDD"...>
    </asp:CustomValidator>
    

    我假设 javascript 将运行第一个验证器代码,并且由于返回 false 停止评估以下代码。如果在浏览器中禁用了 JS,则服务器代码也是如此。 尝试删除 requiredFieldValidator。

    另外,请细化您的问题:“(我的 customavlidator)没有被拿起”是什么意思? (现在才意识到我不确定我是否理解你的问题)

    【讨论】:

    • 感谢您的回答。我现在删除了必填字段验证器,不幸的是,同样的事情仍在发生。我已经更新了我的问题以反映这一点。
    • 您的意思是说您的CustomValidator4_ServerValidate 根本没有被调用吗?您确定valueDropDown.Text 正是“选择一个值”。尝试调试它!
    • 我清理了我的解决方案并进行了重建,一旦我删除了所需的字段验证器,它就开始工作了。感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 2015-06-16
    • 1970-01-01
    • 2013-10-04
    • 2014-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多