停止AutoPostBack复选框的事件传播

时间:2012-06-27 06:00:15

标签: javascript jquery asp.net

我们在UpdatePanel中有AutoPostBack="true"

的两个复选框
<asp:CheckBox  ID="IsCompanyEnabled" runat="server" 
            AutoPostBack="true"
            Checked="false" 
            CssClass="agentcompany" 
            Text="COMPANY" />
<asp:CheckBox  ID="IsCompanyNotDetermined" runat="server" 
            AutoPostBack="true"
            Checked="false" 
            CssClass="agenttobedetermined" 
            Text="TO BE DETERMINED" />

单击这些CheckBox时,将触发CheckedChanged事件。一切都很好。

现在,我们有另一个JavaScript函数作用于相同的CheckBoxes

function SetEmployeeDetails(selectedPanel) {

    var panel_id = "#" + selectedPanel;
    var container = $(panel_id);
    container.find(".agentcompany").find(":checkbox").prop('checked', false); //problem zone
    container.find(".agenttobedetermined").find(":checkbox").prop('checked', false); //problem zone
    //$("#popup_dialog").dialog("close");
    return false;
}

在这种情况下会出现问题。

  1. 假设首先检查Company CheckBox
  2. 然后我触发JavaScript函数,在覆盖Company CheckBox已检查事件的效果后取消Company CheckBox检查。
  3. 现在,当我单击表单上的“保存”按钮时,IsCompanyEnabled_CheckChanged事件将在SaveButton_Click事件触发之前触发。
  4. 这几乎扰乱了我的所有代码流。我不希望再次触发IsCompanyEnabled_CheckedChanged。我怎样才能克服这个问题?

    有没有办法从JavaScript函数向event.stopPropogation询问CheckBoxes?

1 个答案:

答案 0 :(得分:0)

您是否尝试过stopPropagation()?

 container.find(".agentcompany").find(":checkbox")
  .click(function(event){
      event.stopPropagation();
  });