在SelectedIndexChanged事件的下拉列表上执行javascript confirm

Execute javascript confirm on drop down list onSelectedIndexChanged Event

本文关键字:执行 javascript confirm 下拉列表 SelectedIndexChanged 事件      更新时间:2023-09-26

我有一个下拉列表,我想在下拉列表的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#代码?

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

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

如果我正确理解

在服务器端,您可以填充下拉列表并设置事件处理程序

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>

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