Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在SelectedIndexChanged事件的下拉列表上执行javascript确认_Javascript_Asp.net_Drop Down Menu_Confirm_Selectedindexchanged - Fatal编程技术网

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

在SelectedIndexChanged事件的下拉列表上执行javascript确认,javascript,asp.net,drop-down-menu,confirm,selectedindexchanged,Javascript,Asp.net,Drop Down Menu,Confirm,Selectedindexchanged,我有一个下拉列表,我想在下拉列表的selectedindexchanged事件上调用javascript确认框。问题是我不知道如何在selectedindexchanged事件的C#代码执行之前调用javascript确认框。我的.aspx代码是: OnSelectedIndexChanged ="ddlCauses_SelectedIndexChanged" 我想做一些类似的事情: OnSelectedIndexChanged = "return confirm('Are you sure

我有一个下拉列表,我想在下拉列表的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分配给两个不同的东西……如果选择了yes,我如何允许执行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>

函数confirmfunction(){
如果(确认(“进行此更改?”){
__doPostBack('uiItems','');
} 
}

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

可能的重复值几乎相同,但是当用户点击“是”按钮时,我希望触发onSelectedIndexChanged代码。相反,它除了更改下拉列表外什么也不做……关于如何实现这一点,有什么帮助吗?目前我正在使用:onChange=“DisplayConfirmation();”onselectedexchanged=“ddlCauses\u selectedindexchange”但是,当我在确认框中点击取消时,它会执行我在ddlcaused\u selectedindexchange方法下的C代码。如果我点击“是”,它会回发,但不会发生任何事情。我希望相反的情况发生,也就是说,当用户点击YES时,执行selectedIndexChanged中的代码;当用户点击NO时,则不会发生任何事情(只需回发即可)。我实际上在查看代码时发现,我只需要更改javascript函数中的某些内容。我有:函数DisplayConfirmation(){if(confirm('您确定要更改原因代码吗?'){{doPostback('ddlCauses','');}}}我在if语句中加了一个“!”使它做相反的操作。你们这些家伙很鼓舞人心:DI完全复制了代码,而且它从不执行回发