2012-06-27 23 views
2

我們有兩個複選框的UpdatePanel內與AutoPostBack="true"停止事件傳播史爲的AutoPostBack複選框

<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" /> 

在點擊這些複選框中的CheckedChanged事件將觸發。一切都很好。

現在,我們有另一個JavaScript函數作用於同一的CheckBox

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

這幾乎混淆了我所有的代碼流。我不想讓IsCompanyEnabled_CheckedChanged再次觸發。我怎樣才能克服這個問題?

有沒有辦法從JavaScript函數詢問CheckBoxes到event.stopPropogation

+0

在這裏你沒有選擇(選擇,xxxxchanged事件將在點擊事件之前觸發)。如果可能,請更改您的代碼設計以避免chckbox回發和CheckedChange處理程序。 – adatapost

+0

@AVD:維護代碼...太大,無法更改... – naveen

回答

0

你試過stopPropagation()嗎?

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

沒有運氣。我正在進行一次大改寫。我看不到任何出路。謝謝您的幫助。 – naveen