2013-05-21 65 views
1

我有一箇中繼器控件中的複選框。中繼器可能具有可變數量的項目。 每當選中/取消選中任何列表項的ID爲「DFO_MFO」的複選框時,我需要調用js函數。我怎樣才能做到這一點? 我試過下面的代碼,但不工作。運行javascript函數檢查更改複選框內具有特定類的div

$(".DFO_MFO").change(function() { 
    DfoMfoChecked($(this)); 
}) 

ASP.Net標記

<asp:CheckBox runat="server" id="DFO_MFO" class="DFO_MFO"></asp:CheckBox> 

HTML渲染

<span class="DFO_MFO"> 
    <input id="ctl00_PageContent_BULK_WOTableControlRepeater_ctl00_DFO_MFO" type="checkbox" name="ctl00$PageContent$BULK_WOTableControlRepeater$ctl00$DFO_MFO"> 
</span> 
+0

如果'DFO_MFO'是一個控件的ID。 1)。你不能有多個具有相同ID的元素2)。你必須使用'#'作爲id選擇器,'.'作爲類選擇器 –

+1

@ChamikaSandamal你需要閱讀這個問題。該複選框是一個ASP.NET控件,位於中繼器中。這意味着生成的id是唯一的,就像** HTML Rendering **部分所示。另外,爲什麼你會在選擇器中提出'#'和'.'之間的區別? OP正確地瞄準'class' – Ian

回答

3

試試這個:

$(".DFO_MFO").children('input').change(function() { 
    DfoMfoChecked($(this)); 
}) 
+0

謝謝..那正是我想要的。 –

+0

@ChamikaSandamal ::我試圖......但它說「你可以在5分鐘後接受答案..」:( –

0

使用.click()和事件處理函數裏面檢查,如果該元素​​和上切換。或者在你的情況下只需撥打DfoMfoChecked($(this));

+2

'click'是不夠的。你可以用'[tab]'導航到一個複選框並按下[空格]'。另外,如果您有附加的標籤,您可以通過單擊標籤來切換它,這也不會在複選框元素上生成單擊。 – Halcyon

+1

@FritsvanCampen它的工作原理是一樣的。在你聲明類似的東西之前,你應該測試它。 http://jsfiddle.net/ZssTb/1/ – Ian

+0

這一定是一些jQuery魔術然後..我很難過。我不知道我是否贊成這一點。 – Halcyon

2

您正試圖將更改事件分配給span元素。但span元素有一個change事件關聯到它。

在這種情況下,change事件將因事件冒泡而起作用。

使用context選擇器或.find來定位輸入,然後將更改事件分配給複選框。

$("input", ".DFO_MFO").change(function() { 
     DfoMfoChecked($(this)); 
}) 

而且最好是使用附加事件.on()如果你是using jQuery 1.7 and above

$("input", ".DFO_MFO").on('change', function() { 
      DfoMfoChecked($(this)); 
    }) 
+0

+1反映我的錯誤。 –

+0

這是令人難以置信的錯誤。曾聽說過事件冒泡? http://jsfiddle.net/m6Uta/。我並不是說應該這樣做,但是你不應該誤導OP – Ian

+0

用'.on()'附加事件也不是「更好」。使用'.change()'只是一個快捷方式,做同樣的事情,它可以在老版本的jQuery中工作,而''。on()'不是 – Ian

相關問題