我有一个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项时,确认框都会显示。
有谁知道如何解决它?
提前致谢
最佳答案
在ListItem onclick
而不是selectedItem
CheckBoxList上绑定cblFlags
事件
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
循环中。就我的理解而言,请检查更新后的代码对我是否有用。关于javascript - 如何在CheckboxList selectedIndexChanged上显示确认框?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28318847/