我有一个下拉列表,其中包含哪些值来自DB。有一个选项名称OTHER,当我选择其他文本框时出现。对于那个Textbox,我已经制作了一个必填字段验证器。直到这里它工作正常。但是当我选择任何其他选项时,它仍然会给我验证器错误。它不应该发生。当用户没有填写选择OTHER选项的文本框时,它应该只给我必填字段错误。请参阅代码。
下拉列表和文本框代码: -
<asp:DropDownList ID="ddlGraduation" runat="server" CssClass="txtfld-popup_drp"></asp:DropDownList>
<asp:RequiredFieldValidator CssClass="error_msg" ID="reqGraduation" runat="server" ControlToValidate="ddlGraduation" ErrorMessage="Please select graduation details" InitialValue="--Select--" SetFocusOnError="true"></asp:RequiredFieldValidator>
<asp:TextBox ID="txtOther" runat="server" CssClass="txtfld-popup_p"></asp:TextBox>
<asp:RequiredFieldValidator ID="reqOther" runat="server" ControlToValidate="txtOther" ErrorMessage="Please specify your qualification"></asp:RequiredFieldValidator>
用于隐藏的JS代码,当用户从下拉列表中选择并取消选择OTHER选项时显示文本框: -
<script type="text/javascript">
function pageLoad() {
$('#ctl00_ContentPlaceHolder1_txtOther').hide();
$('#ctl00_ContentPlaceHolder1_ddlGraduation').change(function () {
if ($(this).val() === "Other") {
$('#ctl00_ContentPlaceHolder1_txtOther').show();
// $("#ctl00_ContentPlaceHolder1_ddlGraduation").hide();
} else {
$('#ctl00_ContentPlaceHolder1_txtOther').hide();
}
});
答案 0 :(得分:0)
只有在文本框可见时才需要启用必填字段验证器,当您显示文本框时,需要在javascriot函数的下面一行编写代码:
ValidatorEnable(document.getElementById("reqGraduation"), true);
你的javascript代码应该是这样的:
function pageLoad() {
$('#ctl00_ContentPlaceHolder1_txtOther').hide();
$('#ctl00_ContentPlaceHolder1_ddlGraduation').change(function () {
if ($(this).val() === "Other") {
$('#ctl00_ContentPlaceHolder1_txtOther').show();
ValidatorEnable(document.getElementById("reqGraduation"), true);
// $("#ctl00_ContentPlaceHolder1_ddlGraduation").hide();
} else {
$('#ctl00_ContentPlaceHolder1_txtOther').hide();
ValidatorEnable(document.getElementById("reqGraduation"), false);
}
});