0

我有一個下拉列表,我想調用下拉列表中selectedindexchanged事件的JavaScript確認框。問題是我不知道如何在執行selectedindexchanged事件的C#代碼之前調用javascript確認框。我的.aspx代碼:執行javascript確認在下拉列表onSelectedIndexChanged事件

OnSelectedIndexChanged ="ddlCauses_SelectedIndexChanged" 

我想這樣做:

OnSelectedIndexChanged = "return confirm('Are you sure you want to change the cause code?');" 



OnSelectedIndexChanged ="ddlCauses_SelectedIndexChanged" 

不過,我不認爲我可以分配到onSelectedIndexChanged兩個不同的東西......我怎樣才能讓爲了確認javascript被執行,然後C#代碼執行,如果選擇了是的話?

+0

[DropdownList autoposback客戶端確認後可能重複](http://stackoverflow.com/questions/73748/dropdownlist-autoposback-after-client-confirmation) – Ian 2013-02-11 15:39:15

+0

它幾乎是相同的,但是當用戶點擊YES按鈕,我想要觸發onSelectedIndexChanged代碼。相反,它只是改變下拉列表...任何幫助如何做到這一點? – user2030579 2013-02-11 16:07:25

回答

1

如果你使用jQuery,你可以做到以下幾點:

$("#yourSelectId").change(function(event){ 
    event.preventDefault(); //This makes the standard event not happen 
    if(confirm('text')) 
     //do something... 
}); 
0

如果我理解正確

在服務器端,你會填充您的下拉菜單和設置事件處理程序

protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!IsPostBack) 
     { 
      uiItems.Items.Add(new ListItem("", "")); 
      uiItems.Items.Add(new ListItem("One", "One")); 
      uiItems.Items.Add(new ListItem("Two", "Two")); 
      uiItems.Items.Add(new ListItem("Three", "Three")); 
      uiItems.Attributes.Add("onChange", "confirmfunction();"); 
     } 
    } 

    protected void ddlCauses_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     uiText.Text = uiItems.SelectedItem.Text; 
    } 

在aspx頁面上您將擁有

<asp:DropDownList runat="server" ID="uiItems" OnSelectedIndexChanged="ddlCauses_SelectedIndexChanged"> 
</asp:DropDownList> 

<script type="text/javascript"> 
    function confirmfunction() { 
     if (confirm("Make this change?")) { 
      __doPostBack('uiItems', ''); 
     } 
    } 
</script> 

需要注意的是,如果在確認提示中選擇「取消」,則不會恢復選擇框的原始值。

+0

目前我正在使用: onChange =「DisplayConfirmation();」 OnSelectedIndexChanged =「ddlCauses_SelectedIndexChanged」 但是,當我點擊取消確認框時,它執行我在ddlCauses_SelectedIndexChanged方法下的C#代碼。如果我碰到它會回傳,但沒有任何反應。我想要發生相反的情況,也就是說,當用戶點擊YES時,會執行selectedIndexChanged中的代碼,並且當用戶點擊NO時,則不會發生任何事情(僅回傳會執行) – user2030579 2013-02-11 16:26:25

+0

您可以添加您的aspx代碼嗎? – Joe 2013-02-11 16:34:30

+0

我實際上正在審查代碼,看到我只需要改變javascript函數中的某些內容。我有: 我放了一個「!」在if語句中使其做相反的處理。你們是鼓舞人心的:D – user2030579 2013-02-11 17:07:32