在dropdownlist SelectedIndexChanged事件上执行javascript确认

时间:2013-02-11 15:29:50

标签: javascript asp.net drop-down-menu confirm selectedindexchanged

我有一个下拉列表,我想在下拉列表的selectedindexchanged事件中调用一个javascript确认框。问题是我不知道在执行selectedindexchanged事件的C#代码之前如何调用javascript确认框。我的.aspx代码是:

 OnSelectedIndexChanged ="ddlCauses_SelectedIndexChanged"

我想做点什么:

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



OnSelectedIndexChanged ="ddlCauses_SelectedIndexChanged"

但是我不认为我可以将onSelectedIndexChanged分配给两个不同的东西......如果允许执行javascript确认,然后如果选择是,则执行C#代码?

2 个答案:

答案 0 :(得分:1)

如果您使用jQuery,您可以执行以下操作:

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

答案 1 :(得分: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>

需要注意的是,如果在确认提示中选择“取消”,则不会恢复选择框的原始值。