[英]How to show a confirmation box on CheckboxList selectedIndexChange?
我有一个CheckBoxList,我只想在第二个ListItem(LOCKED)上添加一个确认框。 我的意思是,如果选择的项目是“ LOCKED”,则显示确认框,否则显示“ not”。
这是myCheckBoxList
<asp:CheckBoxList runat="server" AutoPostBack="True" ID="cblFlags" onselectedindexchanged="cblFlags_SelectedIndexChanged">
<asp:ListItem Text="VALID" Value="ISVALID"></asp:ListItem>
<asp:ListItem Text="LOCKED" Value="ISLOCKED"></asp:ListItem>
</asp:CheckBoxList>
这是我的代码背后
protected void cblFlags_SelectedIndexChanged(object sender, EventArgs e)
{
var selectedItems = cblFlags.Items.Cast<ListItem>().Where(x => x.Selected);
foreach (ListItem selectedItem in selectedItems)
{
if(selectedItem.Value == "ISLOCKED")
cblFlags.Attributes.Add("onclick", "if (!confirm('Are you sure ?')) return false;");
}
}
问题是,每次我选中和取消选中任何checkboxList项时,确认框都会显示。
有谁知道如何解决它?
提前致谢
将onclick
事件绑定到ListItem selectedItem
而不是cblFlags
,后者是CheckBoxList
foreach (ListItem selectedItem in cblFlags.Items)
{
if(selectedItem.Value == "ISLOCKED")
selectedItem.Attributes.Add("onclick", "if (!confirm('Are you sure ?')) return false;");
}
编辑
我认为您需要使用cblFlags.Items
而不是selectedItems
来更改循环,因为一旦取消选中复选框,您就将 javascript事件仅绑定到所选元素,而在回发之后,事件将不会再次绑定,因为执行不会进入foreach
循环 。 就我的理解而言,检查更新后的代码对我是否有用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.