我有一个下拉列表,我想在下拉列表的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#代码?
答案 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>
需要注意的是,如果在确认提示中选择“取消”,则不会恢复选择框的原始值。