0

我有两个下拉列表。当我更改第一个下拉列表时,第二个下拉列表将通过以下 jQuery 代码重置为选定的索引 0。

    $("select[id*='ddlWayType']").bind("change", function () {
        $("select[id*='ddlVehicle']").val("Select");
    });

我的 seconddropdown 有 AutoPostBack="true" 和 SelectedIndexChange 事件。我的问题是重置后,当我从第二个下拉列表中选择项目时,请求正常发送到服务器,但第二个下拉列表的 selectedindexchange 事件没有被触发。当我们没有通过 jquery 重置 2nd DropDown 的选定索引时,它会正常触发。

4

1 回答 1

1

您将服务器端状态与客户端状态混合在一起。在客户端所做的更改不会更改视图状态/控制状态。因此,如果您为下拉列表选择默认选择值以外的任何值ddlVehicle,它将调用ddlVehicle_SelectedIndexChanged在服务器端注册的。我也验证了相同的结果。


您可以通过添加 Web 方法/ajax 并在客户端更改上执行相同的操作来实现此目的。


<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    <script type="text/javascript">
        jQuery(function ($) {
            $("select[id*='ddlWayType']").bind("change", function () {
                $("select[id*='ddlVehicle']").val("Select");
            });
        });

    </script>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <asp:DropDownList ID="ddlWayType" runat="server">
                <asp:ListItem Text="Select" Value="Select"></asp:ListItem>
                <asp:ListItem Text="Select1" Value="Select1"></asp:ListItem>
                <asp:ListItem Text="Select2" Value="Select2"></asp:ListItem>
            </asp:DropDownList>

            <asp:DropDownList ID="ddlVehicle" runat="server" AutoPostBack="true" OnSelectedIndexChanged="ddlVehicle_SelectedIndexChanged">
                <asp:ListItem Text="Select" Value="Select"></asp:ListItem>
                <asp:ListItem Text="Select1" Value="Select1"></asp:ListItem>
                <asp:ListItem Text="Select2" Value="Select2"></asp:ListItem>
            </asp:DropDownList>
        </div>
    </form>
</body>
</html>
于 2013-05-29T07:10:36.873 回答