【发布时间】: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