【问题标题】:Required field validator to be fired on button submit按钮提交时触发的必填字段验证器
【发布时间】:2014-07-16 17:38:08
【问题描述】:

我有一个下拉列表,当我选择 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();
    }
});

});

请帮忙

【问题讨论】:

    标签: javascript html asp.net


    【解决方案1】:

    一旦您的验证触发,那么您将无法在不输入有效数据的情况下提交表单。还有一件事,无论您是否要显示文本框,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;    
        }
    }
    

    如果您愿意,您也可以在服务器端编写相同的功能。最好在客户端和服务器端都进行验证,但如果您不想在服务器端进行验证,也可以。

    【讨论】:

    • 我在if标签中写的条件没有出现,你能不能给我我必须写的代码..
    • TextBoxQualification(sender, args)的条件,还有一件事。由于自定义验证器,我的页面每次单击提交按钮时都会刷新。为什么
    • 您必须在单击提交按钮时将 ValidationGroup="G1" 提供给您想要验证的所有控件。您可以使用任何名称代替“G1”,但请记住所有控件(下拉列表、文本框、requiredfieldvalidator、customvalidtor、按钮等)都具有相同的验证组。
    • 您必须编写以下代码: function TextBoxQualification(sender, args) { if($('#ctl00_ContentPlaceHolder1_ddlGraduation').val() == 'Other' && ($("[id* =ctl00_ContentPlaceHolder1_txtOther]").val() == '') || ($("[id*=ctl00_ContentPlaceHolder1_txtOther]").val() == null)) { args.IsValid = false; } }
    • 我为所有控件提供了验证组,但它也没有给我正常的必填字段错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-03
    • 1970-01-01
    • 2016-12-16
    • 1970-01-01
    • 1970-01-01
    • 2017-05-19
    相关资源
    最近更新 更多