我有一个下拉列表,当我选择OPTION值时,会出现一个Textbox。问题是,当我直接提交所需的错误时,我会给出消息,即下拉和文本框。它应该只给出下拉错误。只要我从下拉列表中选择OPTION,它就会直接向我提供文本框的错误消息。当我没有在文本框中添加任何值并直接提交表单时,它应该给我。我尝试了代码,但它没有按要求工作。请参阅以下代码:
HTML for dropdown&文本框
<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>
另外,请参阅用于处理文本框visiblity&amp;的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();
}
});
});
请帮忙
答案 0 :(得分:1)
一旦验证开始,您就无法在未输入有效数据的情况下提交表单。还有一件事,RequiredFieldValidator每次都会触发是否要显示文本框。如果您隐藏文本框并且验证不会触发,则不是这样,情况应该不是这样。 您的问题的解决方案是保留RequiredFieldValidator仅用于下拉并删除文本框并添加一个自定义验证器,您可以根据条件检查字段是否为空,并且单击&#时将触发自定义验证器34;提交&#34;按钮。
<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;
}
}
如果需要,您也可以在服务器端编写相同的功能。最好在客户端和服务器上进行双方验证,但如果您不想在服务器端进行验证,那么也没关系。