我有以下的標記:ASP.NET/VB.NET:Dropdownlist SelectedIndexChanged不會觸發onchange =「javascript:return true;」
到這個<asp:DropDownList ID="dd1" AutoPostBack="true" runat="server">
<asp:ListItem Value="1">1</asp:ListItem>
<asp:ListItem Value="2">2</asp:ListItem>
</asp:DropDownList>
<asp:DropDownList ID="dd2" AutoPostBack="true" onchange="javascript:return true;" runat="server">
<asp:ListItem Value="1">3</asp:ListItem>
<asp:ListItem Value="2">4</asp:ListItem>
</asp:DropDownList>
有線:
Protected Sub changed1(sender As Object, e As EventArgs) Handles dd1.SelectedIndexChanged
End Sub
Protected Sub changed2(sender As Object, e As EventArgs) Handles dd2.SelectedIndexChanged
End Sub
當DD2的指數發生變化時,你會想到它的處理器火了吧?那麼,它不會。相反,它會「排隊」,並在dd1的處理程序觸發索引更改後觸發。如果你把dd2取下onchange="javascript:return true;"
,它會很好。
有沒有人知道這裏發生了什麼?
編輯:我的第一個回答是,在下拉列表中使用返回表達式不會像按鈕的單擊事件一樣工作,但我發誓我之前使用dropdownlist完成了此操作。
更新:我能夠通過在Javascript中這樣做是爲了迫使服務器事件觸發:
__doPostBack("<%=dd2.ClientID %>", '');
我不明白爲什麼我要做到這一點,但它的作品。但是,我仍然想以另一種方式來做,所以如果有人知道,請讓我知道,以便我可以將您標記爲答案。
我正在使用驗證? – oscilatingcretin
你問我是否使用驗證?如果頁面上有驗證器,但不希望DropDownList觸發驗證,請將'CausesValidation'設置爲false。否則,只需將'AutoPostBack'設置爲true,並且一切正常。 –
我的示例顯示我已經有AutoPostBack =「true」。我也沒有做任何有關驗證的事情。我只是不想讓服務器端事件觸發,取決於我是否返回true或false。 – oscilatingcretin