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