2012-03-24 26 views
0

我有一個複選框與複選框。我正在使用jQuery將Click事件添加到所有複選框。當複選框被選中,一個腳本應該運行,並檢查選中複選框的屬性,以確定它的類型,然後執行相應的功能:複選框運行腳本onclick實際設置檢查標誌

function() { 
    $('.RcbTag').find('input[type="checkbox"]').click(function() { 
     var evtCB = $(this); 
     var id = $(this).closest(".rcbSlide").siblings(".RcbTag").attr("id"); 
     var rcbObject = $find(id); 

     rcbObject.get_items().forEach(
     function (item, index) { 
      if (item.get_attributes().getAttribute('GUIDType') == 'group' && 
       item.get_checked()) { 
       alert("Checked"); 
      } 
     }); 
    }); 

現在的問題是,它似乎是在腳本運行在複選框實際翻轉到「檢查」之前。因此在這個例子中,它看起來是否看到item屬性是'group',如果它被檢查。這總是返回false,但是當我取消選中時將返回true。所以我在這裏錯過了一些事件順序。我該如何解決?

回答

0

我想你是混合jQuery點擊處理程序和Telerik代碼。讓我們試着堅持Telerik認可的事件,並且我認爲一切都會按照您的預期工作。

在您radcombobox控件,declaritively添加事件處理程序是這樣的:

OnClientItemChecked = "ComboBoxRowClick" 

然後聲明JS功能,你有現在(除了我們想它命名,而不是保持匿名):

function ComboBoxRowClick(sender, args) { 
    if (args.get_item().get_attributes().getAttribute('GUIDType') == 'group' && 
     args.get_item().get_checked()) { 
     alert("Checked"); 
    } 
} 

有關Telerik的從客戶端功能的詳細信息,您可以檢查此鏈接:http://www.telerik.com/help/aspnet-ajax/listboxitem-client-api.html

此外,你可能會遇到這個小annoyan在這裏你必須點擊小複選框本身,而不是行中的任何地方(正如人們所期望的那樣)。你可以在這裏找到解決方法:http://www.msigman.com/2010/07/telerik-radlistbox-fix/

0

嘗試使用change而不是click?這樣你就可以捕獲通過keybord所做的更改。它將解決ypur問題。

+0

仍然做同樣的事情 – Sinaesthetic 2012-03-24 19:41:40

+0

你正在使用'get_checked'和'get_items' - 那不是jQuery的一部分。你有jstree或其他東西添加?控制檯中是否有任何js錯誤? – StilgarBF 2012-03-24 19:50:07

+0

get_checked和get_items是telerik控件對象的一部分,它是一個帶複選框的組合框 – Sinaesthetic 2012-03-24 21:14:22