4

我有一个 asp.net 表单,其中包含一个下拉列表,该下拉列表在更改时发回服务器,并用一些日期填充第二个下拉列表。

该表单还包含其他字段,其中一些是经过验证的客户端和一些服务器端。

这是我遇到的问题。如果我收到客户端验证错误,然后尝试更改下拉列表,则不会填充第二个下拉列表。如果我再次更改第一个下拉列表,它会按预期工作。

这是我的提交按钮:

<asp:Button ID="btnSubmit" Text="Submit" runat="server" OnClientClick="Page_ClientValidate(); return checkPassengers();" OnClick="Page_Transfer" ValidationGroup="FormSubmit" />

这是我的客户端验证:

function checkPassengers() {
    if($("#testField").val() == "Name *" || $("#testField").val() == "") {
            $("#pltester").prepend("<p class='fillall'>Please fill in all fields marked with *</p>");
            return false;       
    }
};

下拉菜单:

<asp:UpdatePanel ID="UpdatePanel1" runat="server" >
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="ddl1st" EventName="SelectedIndexChanged" />
    </Triggers>
    <ContentTemplate>
        <asp:DropDownList ID="ddl1st" Width="190" AutoPostBack="true" OnSelectedIndexChanged="ChooseDates1st" runat="server" />
        <asp:DropDownList ID="ddlDepart1st" AutoPostBack="true" runat="server" />
    </ContentTemplate>
</asp:UpdatePanel>
4

4 回答 4

4

简单的设置CausesValidation="true"并没有解决我的问题。使用 asp 下拉列表的 SelectedIndexChange 事件时,这似乎是个问题。我发现的解决方法是通过在回发之前验证不存在的验证组名称来使用 js 重置前端的验证。

function ignoreValidation() {
            if (typeof Page_ClientValidate != 'undefined') {
                Page_ClientValidate('reset-validation');
                Page_BlockSubmit = false;
            }
            return true;
}

对于下拉列表

<asp:DropDownList CausesValidation="false" onchange="ignoreValidation();" runat="server" ID="CustomerDropDownList" OnSelectedIndexChanged="LoadCustomers" AutoPostBack="true"/>

于 2015-02-04T18:25:04.343 回答
4

在使用更新面板时,我曾多次遇到过这个问题。

我发现如果需要验证该字段,那么您必须实际设置CausesValidation="true"元素才能使其仍可与更新面板一起使用。

希望这可以帮助你!

于 2012-04-20T11:26:54.857 回答
1

如果下拉列表不需要验证,可以CausesValidation="false"在初始下拉列表中设置。这将导致它不会触发验证,因此可以随意更改。

或者,您可以将 DropDownList 放在不同的ValidationGroup中,以便更改它不会触发其他控件的验证。

于 2012-04-19T16:47:35.243 回答
0
function validateCommand(group) {
        if (typeof (Page_ClientValidate) == 'function') {
            Page_ClientValidate(group);
            if (Page_IsValid) {
                Page_BlockSubmit = !confirm('Are you sure?');
            }
        }
    }
于 2013-04-05T08:30:36.317 回答