如何在CheckboxList selectedIndexChanged上显示确认框?

时间:2015-02-04 10:20:24

标签: javascript c# checkboxlist confirm

我有一个CheckBoxList,我想在第二个ListItem(LOCKED)上添加一个确认框。我的意思是,如果选择的项目是“已锁定”,则显示确认框,在另一种情况下不显示“。

这是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项时。

有没有人有想法如何修复它?

提前致谢

1 个答案:

答案 0 :(得分:1)

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循环。检查我的更新代码,就我的理解而言,它对我有用。