我有一个下拉列表,当我选择OPTION值时,将出现一个文本框。问题是,当我直接提交所需的错误时,会同时显示有关下拉列表和文本框的消息。它应该只给出错误的下拉菜单。从下拉菜单中选择“选项”后,它将直接为我显示文本框错误消息。当我没有在文本框中输入任何值并直接提交表单后,它应该给我。我尝试使用该代码,但未按要求工作。请参见下面的代码:
下拉菜单和文本框的HTML
<asp:DropDownList ID="ddlGraduation" runat="server" CssClass="txtfld-popup_drp1"></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_p1" Style="display: none;"></asp:TextBox>
<asp:RequiredFieldValidator ID="reqOther" runat="server" ControlToValidate="txtOther" ErrorMessage="Please specify your qualification" Enabled="false"></asp:RequiredFieldValidator>
另外,请参阅用于处理文本框可见性和触发必填字段的javascript代码:-
<script type="text/javascript">
$(document).ready(function () {
$("select[id*=ctl00_ContentPlaceHolder1_ddlGraduation]").change(function () {
if ($('#ctl00_ContentPlaceHolder1_ddlGraduation').val() == 'Other') {
$("[id*=ctl00_ContentPlaceHolder1_txtOther]").show();
var valEmail = $("[id*=reqOther]");
ValidatorEnable(valEmail[0],true);
}
else {
var valEmail = $("[id*=reqOther]");
ValidatorEnable(valEmail[0],
false);
$("[id*=ctl00_ContentPlaceHolder1_txtOther]").hide();
}
});
});
请帮忙
验证一旦触发,您就无法在不输入有效数据的情况下提交表单。还有一件事,无论您是否要显示文本框,RequiredFieldValidator都会在每次触发。不是那样的话,如果您将隐藏自己的文本框并且不会触发验证,则情况并非如此。解决您的问题的方法是:仅将RequiredFieldValidator保留用于下拉列表,然后将其删除用于文本框,然后添加一个自定义验证器,您可以根据条件在其中检查字段是否为空,并且在单击“提交”后将触发自定义验证器“ 按钮。
<asp:CustomValidator ID="reqOther" runat="server" EnableClientScript="true"
ErrorMessage="Please specify your qualification"
ClientValidationFunction="TextBoxQualification"
OnServerValidate="TextBoxQualification_Validate" Display="Dynamic" >
</asp:CustomValidator>
客户端验证功能将如下所示:
function TextBoxQualification(sender, args) {
if(your condition) //that if you want to validate the textbox or not based on the selection of dropdown.
{
args.IsValid = false;
}
}
如果需要,您也可以在服务器端编写相同的功能。在客户端和服务器双方都进行验证是很好的,但是如果您不想在服务器端进行验证,那也很好。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句