2

我有一个下拉列表,其自动回发设置为 true,并且 selectedindexchanged 事件用于某些逻辑。但条件是当页面上的其他数据发生更改时,我需要通过显示确认对话框来警告用户更改。我正在使用 javascript 来执行此操作,但问题是即使函数返回 true,也不会发生回发。我不知道出了什么问题。一些身体可以帮助解决这个问题。

function ValidateDataChange() {
        var isDataChanged = $('#<%=hdnDataIsChanged.ClientID %>').val();
        if (isDataChanged == "True") {
            alert(isDataChanged);
            return false;
        }

        return true;
    }

  <asp:DropDownList ID="ddlHierarchy" runat="server" AppendDataBoundItems="true" AutoPostBack="true"
                        onchange="return ValidateDataChange();" Enabled="false" OnSelectedIndexChanged="ddlHierarchy_SelectedIndexChanged">
                        <asp:ListItem Value="" Text="--Select Hierarchy--"></asp:ListItem>
                    </asp:DropDownList>
  <asp:HiddenField ID="hdnDataIsChanged" runat="server" />


 protected void ddlHierarchy_SelectedIndexChanged(object sender, EventArgs e)
    {
      //mycode
    }
4

1 回答 1

3

selectedIndexChanged 绑定到 DDL 客户端的 onchange 事件。

通过写作

onchange="return ValidateDataChange();"

你实际上在做:

onchange="return ValidateDataChange(); __doPostBack(this.id,'');"

因为回归,__doPostBack永远不会受到打击。

你应该试试 :

onchange="if(!ValidateDataChange()) return false;" 
于 2013-06-11T11:36:45.757 回答