我有一个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/

10-13 02:05