javascript - C# 中的 CustomValidator 未拾取颜色

标签 javascript c# jquery asp.net validation

我尝试在网页内的下拉列表中使用 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>

最佳答案

您正在附加到同一个 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)没有被拿起”是什么意思? (现在才意识到我不确定我是否理解你的问题)

关于javascript - C# 中的 CustomValidator 未拾取颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33802591/

相关文章:

c# - 为什么在 linq 中迭代一个组与迭代一个集合不同

c# - 向后导航不会释放内存

javascript - 日期选择器默认日期应该是昨天,并且始终从月份第一天开始

javascript - 如何在 ExtJS 中添加图像按钮网格

javascript - 无法读取未定义的属性 'prototype'; CoffeeScript 与 Require.js 的继承

javascript - 页面滚动后更改元素的不透明度

javascript - Jquery 循环 : iterate siblings by four, 然后从头开始

javascript - 在 PhantomJS 中评估似乎不起作用

c# - 无法将类型 'system.byte ' 的对象强制转换为类型 'system.iconvertible'

javascript - 使用数据表呈现多维嵌套 JSON 响应